git で設定しとかないと捗らないだろってののまとめ
TIPS 扱いされてることも多いけど、いやいや、この辺はどんなプロジェクトでも基礎中の基礎の超捗る設定じゃないですか、ってのをまとめてみる。
.git-completion.bash
git コマンドやブランチ名、その他をTAB補完してくれるのと、プロンプトにブランチ名が出せる。
git のソースに含まれるファイルか、このあたりで提供されるものを取ってきて設置して、.bashrc
に以下を追記。
if [ -r "$HOME/.git-completion.bash" ]; then
. $HOME/.git-completion.bash
PS1="[\u@\h\$(__git_ps1 \" %s\") \w]\n\\$ "
fi
これでブランチ名が長くても安心だし、ブランチ名に dev- とか fix- とかプリフィックスつけとく意味が増す。
似たような設定で、.gitconfig
で以下を設定しておくと、間違えてエンターしたときに、候補がひとつならそのまま実行してくれたりする。
[help]
autocorrect = 1
ちなみに、複数候補ある場合だと、それらをリストして見せてくれる。
git log のデラックス版
豪華なログ表示のエイリアス。git logs
でこんな感じに表示する。
.gitconfig
[alias]
logs = log -p --graph --decorate --pretty=format:\"%ad [%cn] <c:%h t:%t p:%p> %n %Cgreen%d%Creset %s %n\" --stat
グラフと、commit, tree, parent のハッシュを見れるようにしておくのが大きい。
差分表示 hook
コミットするときに、差分のあるファイルリストだけじゃなくて、差分自体も表示してくれる hook。
.git/hooks/prepare-commit-msg
#!/bin/sh
case "$2,$3" in
commit,HEAD)
echo "# " >> "$1"
git diff --cached HEAD^ | sed -e 's/^/# /g' >> "$1"
;;
,|template,|squash,)
echo "# " >> "$1"
git diff --cached | sed -e 's/^/# /g' >> "$1"
;;
*)
;;
esac
小さな差分のときはコミットついでで済む。
【2012-11-07追記】
ブクマとかで教えてもらったんですが、この hook でやってることは coimmit -v
をエイリアスにするでもおなじことができますね。まあ、コミット時に何か出す hook の雛形ってことで!
コミットメッセージの雛形
コミットメッセージには○○を書け!なんて叫んで主張しても無駄。雛形で誘導する方が効果あると思う。
雛形を読む設定。
.gitconfig
[commit]
template = ~/.gitmessage.txt
雛形。
~/.gitmessage.txt
# description
# [NEW FEATURES]
# [IMPROVEMENTS]
# [BUG FIXES]
# [INCOMPATIBLE CHANGES]
# [NO CODE CHANGES]
# etc
差分の説明を書き、該当する差分の分類のコメントをイキに変更する。その他書きたいことは # etc
の下に書く。
以上。
おまけ
git config
コマンドは、-e
でエディタ編集起動できる。設定ファイルどれだっけーとかやらなくて済んで捗る。