# git で設定しとかないと捗らないだろってののまとめ {{tag: git}} TIPS 扱いされてることも多いけど、いやいや、この辺はどんなプロジェクトでも基礎中の基礎の超捗る設定じゃないですか、ってのをまとめてみる。 ## .git-completion.bash git コマンドやブランチ名、その他をTAB補完してくれるのと、プロンプトにブランチ名が出せる。 [[https://github.com/git/git/blob/master/contrib/completion/git-completion.bash|git のソースに含まれるファイル]]か、[[http://bash-completion.alioth.debian.org/|このあたり]]で提供されるものを取ってきて設置して、`.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` でこんな感じに表示する。 ![[https://img.bayashi.net/diary/2012/20121103_01.gif|delux git log]] .gitconfig [alias] logs = log -p --graph --decorate --pretty=format:\"%ad [%cn] %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` でエディタ編集起動できる。設定ファイルどれだっけーとかやらなくて済んで捗る。