Help us understand the problem. What is going on with this article?

git logでコミットの差分の中身で絞り込む

More than 5 years have passed since last update.

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と組み合わせると更に吉。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away