git log
コマンドは
--graph
オプションなどの組み合わせで、良い感じにコミットグラフを表示させる事ができます。
git log --graph --date-order -C -M --pretty=format:\"<%h> %ad [%an] %Cgreen%d%Creset %s\" --all --date=short
git config --global alias.graph 'log --graph --date-order -C -M --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=iso'
ブランチやオプションの指定をしたい
上記のままでも良い感じですが、普通の
git log
同様にブランチを指定したりなどしたい。
そこで、シェルスクリプトを作ってそれを
git graph
というエイリアスで実行できるようにしてみる。
gitのエイリアス設定は、
!マークを先頭に付けると任意のシェルコマンドを実行させられる。
git config --global alias.graph '!~/.git-graph.sh'
※設定出来るシェルコマンドはあくまで1つだけらしい。コマンドをパイプで繋ぐ事は可能だったが、セミコロンが使えないので制御文をワンライナーで記述したりは出来ない。
.git-graph.sh の中身
実行例1:オプション無しなら
--all
オプションを自動で付加して実行する
$ git graph
* <b4840e1> 2013-01-16 22:38:56 +0900 [mstssk] (HEAD, master) F
* <93d7f2c> 2013-01-16 22:38:50 +0900 [mstssk] E
| * <659324a> 2013-01-16 22:38:28 +0900 [mstssk] (experiment) D
| * <1210e5e> 2013-01-16 22:38:18 +0900 [mstssk] C
|/
* <3251633> 2013-01-16 22:32:08 +0900 [mstssk] B
* <4264244> 2013-01-16 22:31:56 +0900 [mstssk] A
* <4a0ab4a> 2013-01-16 22:28:16 +0900 [mstssk] first commit
実行例2:ブランチ名を指定すれば、そのブランチのlogだけを表示
$ git graph experiment
* <659324a> 2013-01-16 22:38:28 +0900 [mstssk] (experiment) D
* <1210e5e> 2013-01-16 22:38:18 +0900 [mstssk] C
* <3251633> 2013-01-16 22:32:08 +0900 [mstssk] B
* <4264244> 2013-01-16 22:31:56 +0900 [mstssk] A
* <4a0ab4a> 2013-01-16 22:28:16 +0900 [mstssk] first commit
実行例3:日付形式を変更。※シェルがテキトーなので
--all
が付かなくなる。
$ git graph --date=local
* <b4840e1> Wed Jan 16 22:38:56 2013 [mstssk] (HEAD, master) F
* <93d7f2c> Wed Jan 16 22:38:50 2013 [mstssk] E
* <3251633> Wed Jan 16 22:32:08 2013 [mstssk] B
* <4264244> Wed Jan 16 22:31:56 2013 [mstssk] A
* <4a0ab4a> Wed Jan 16 22:28:16 2013 [mstssk] first commit
tab補完もしたい
ここまで来たらtab補完もしたい。
git log
と同じ補完をしてくれるようにするには、以下の設定ファイルを
~/.bash_completion という名前で置いておく。
既に
~/.bash_completion があるなら、追記すれば良い。