git logの検索オプションとしては、コミッタ名で絞り込む--author
やコミットメッセージの内容で絞り込む--grep
が有名だと思いますが、各コミットの差分で追加されたり削除された行の内容で絞り込む-S
というオプションもあります。
似たようなコマンドとして、git blame
もありますがこちらは現時点で存在する行が最後に更新されたリビジョンが分かるだけなので、git log -S
の方が
- ある特定の内容が削除されたリビジョンを知りたい時
- ある特定の内容が更新されたリビジョン全てを知りたい時
といった場合に便利です。
使い方
$ git log -S"hogehoge"
このように指定すると、コミットの中で"hogehoge"という文字列を含む行が追加もしくは削除されたものだけで絞り込んでくれます。
もちろん、ある特定のファイルに対する変更だけを絞り込むこともできます。
$ git log -S"hogehoge" ./test.java
この場合だと、./test.javaというファイルの中でhogehogeという内容の差分があったリビジョンを表示してくれます。
その他、git logの他のオプションと組み合わせることも可能です。
tigと組み合わせると更に便利
tigコマンドでも-S
オプションを使うことができ、かなり便利です。
※ tigについてはこの辺りを参照すると良いです。http://blog.yuyat.jp/archives/557
$ tig -S"hogehoge"
とやると、各コミットの変更内容の中に"hogehoge"を含むものだけをtigで表示してくれます。
tigでは各コミットの変更内容を見るのも簡単にできるので、変更内容を追いかけるのが素早く出来ます。
まとめ
ある特定の内容の差分を含むリビジョンを知りたい場合はgit log -S
を使うのが吉。
tigと組み合わせると更に吉。