git logを見やすく

見づらくはないけど、見やすいというのは言いすぎな気がするgit log

git log --graph --onelineをメインに使っていたんだけど、現在時刻に対する相対的な時刻とかコミッターの名前とか表示したくなったので色々いじってた。%C(white bold blue)とかでターミナルの色を参照して文字色と背景色を指定することができるということを理解するまでが長かった……。

上記スクリーンショットのようなgit logは以下のようなコマンドで実現できる。

$ git log --graph --pretty='format:%C(yellow)%h%Cblue%d%Creset %s %C(black bold)%an, %ar%Creset'

%dで参照名(ブランチやタグ、リモートブランチ)を、%anでコミッターの名前を、%arでコミットの相対的な日付を表示するようにして、%Cで色を変えている。%Cred%Cblue%Cgreen以外を使う場合はcolor.branch.*オプションと同じフォーマットの%C(…)を使う。僕はここを大きく読み違えたため、color.branch.currentを設定しておいて%C(current)とかして参照するものと勘違いし、「うまくいかないなー」とかかなりの長期間寝ぼけていた。

The value for these configuration variables is a list of colors (at most two) and attributes (at most one), separated by spaces. The colors accepted are normal, black, red, green, yellow, blue, magenta, cyan and white; the attributes are bold, dim, ul, blink and reverse.

git-config(1)

ということなので%C(yellow)で暗い黄色が、%C(cyan bold)で明るいシアンが参照できる。bold以外の属性はターミナル次第で無意味だったりするのは注意が必要。

GUIクライアント……。