ある行の変更がどういう経緯でなされたか知りたい時に。
リファクタリング等々の原因で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の方が打ちやすい。それでいいじゃないか。