36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

git blameを再帰的に行う

Last updated at Posted at 2012-10-31

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

参考

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?