gitconfigで設定していること
gitconfig全体
~/.gitconfig
のgitコマンド全体に関わる設定を紹介します
[user]
name = John Doe
email = john.doe@gmail.com
[color]
ui = auto
[alias]
co = checkout
cm = commit
st = status
br = branch -av
ft = fetch --prune
uncommit = reset HEAD^
hist = log --graph --stat
l = log --graph --all --format=format:'%C(bold red)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold blue)― %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
ignore = !"f() { local s=$1; shift; while [ $# -gt 0 ]; do s="$s,$1"; shift; done; curl "http://www.gitignore.io/api/$s"; }; f"
delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
sco = !git checkout $(git branch | peco)
[push]
default = simple
エイリアス系
[alias]
co = checkout
cm = commit
st = status
br = branch -av
ft = fetch --prune
よく使うコマンドはエイリアスを設定するとタイプ数を減少させることが出来ます。
ブランチを表示するbranch
コマンドでは-a
オプションでリモートも含めたすべてのブランチを、-v
オプションでコミットメッセージを含めた情報を表示させています。
フェッチコマンドfetch
では--prune
オプションを指定し、自動的にリモートで削除されているブランチを削除するようにしています。
簡易undo
[alias]
uncommit = reset HEAD^
reset
コマンドではオプションの--soft
, --hard
, --mixed
の使い分けにより、HEAD, インデックス, ワーキングツリーがそれぞれどうなるか気にしなければなりません。
好みの動作でよく使うものをエイリアスで登録しています。
ログ表示系
[alias]
hist = log --graph --stat
l = log --graph --all --format=format:'%C(bold red)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold blue)― %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
gitignoreの自動生成
[alias]
ignore = !"f() { local s=$1; shift; while [ $# -gt 0 ]; do s="$s,$1"; shift; done; curl "http://www.gitignore.io/api/$s"; }; f"
delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
使用言語は環境に合わせたgitignoreを適宜用意するのは面倒なものです。
そんなときはgithubがまとめているgitignoreを参考にするのもよいですが、コマンドからgitignoreを生成できるようにしておくとより簡単になります。
そこでgitignore.ioというサービスを利用し、コマンドからgitignoreを生成できるようにしています。
使い方はgit ignore ruby,rails
とオプション指定をカンマ区切りで渡すだけ。
以下のように生成されたgitignoreが表示されます。
# Created by http://www.gitignore.io
### Ruby ###
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/test/tmp/
/test/version_tmp/
/tmp/
## Specific to RubyMotion:
.dat*
.repl_history
build/
## Documentation cache and generated files:
/.yardoc/
/_yardoc/
/doc/
/rdoc/
## Environment normalisation:
/.bundle/
/lib/bundler/man/
# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# Gemfile.lock
# .ruby-version
# .ruby-gemset
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc
### Rails ###
*.rbc
capybara-*.html
.rspec
/log
/tmp
/db/*.sqlite3
/public/system
/coverage/
/spec/tmp
**.orig
rerun.txt
pickle-email-*.html
# TODO Comment out these rules if you are OK with secrets being uploaded to the repo
config/initializers/secret_token.rb
config/secrets.yml
## Environment normalisation:
/.bundle
/vendor/bundle
# these should all be checked in to normalise the environment:
# Gemfile.lock, .ruby-version, .ruby-gemset
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc
ローカルに反映させたい場合はgit ignore ruby,rails > .gitignore
のようにリダイレクトを使います。
あとは自動生成されたものを元にカスタマイズしましょう。
git ignore list
とすると対応しているオプション指定の一覧を見ることが出来ます。
マージされたブランチを削除する
[alias]
delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %