ある行の変更がどういう経緯でなされたか知りたい時に。
リファクタリング等々の原因でgit blame
一発では知りたいChangeに辿りつけないことありますよね。
$ tig blame
git
コマンドだけではさすがに厳しいので、vim風インターフェースのtig
を使って
tig blame <filename>
とする。
この画面上で、以下の操作を繰り返すことで、コミット履歴をたどっていける。
-
Enter
: カーソル行のコミット内容を表示 -
,
: カーソル行のコミットの親のコミットにblameを適用
他に使いそうなtig
コマンドとしては
-
h
:tig
で使えるコマンド一覧を表示 -
Tab
:ビューのフォーカスを切り替え -
q
: 現在のビューを閉じる
ちなみに一度、,
を押してしまうと、前の画面に戻る方法はないらしい。そんな時はq
またはQ
で一から閉じてやり直し。
まぁ、これ以上求めるなら、GUIツールを使ってください。
$ git log -S/-G
ちょっと違うけれど、
git log -p -S'search keyword'
もおすすめ。search keyword
が含まれる変更をすべて出してくれる。実はこっちのほうが使えるかも。
ちなみに、-p
はlogをパッチ形式出だしてくれるオプションで、これをつけることで、どういうdiffだったかが見られる。
正規表現も以下のどちらかのようにすれば使える。
git log -p -G'regex search keyword'
git log -p -S'regex search keyword' --pickaxe-regex
2つの違い?気にするな。-G
の方が打ちやすい。それでいいじゃないか。