$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

git logの内容を検索する-Sと-Gの違い

ずっとgit logの内容を検索するときに-Sオプションを使っていたが、実は近いオプションに-Gオプションもあり、探したい内容によっては使い分けないとダメということを初めて知った...

詳しくはhttps://git-scm.com/docs/git-log-S-Gのドキュメントを見てほしい。簡単にまとめると

  • -Sは指定した文字列の出現回数が変わるdiffがあるcommitを検索する
  • -Gは指定した正規表現がマッチする文字列がdiffにあるcommitを検索する

ドキュメントの事例部分が結構わかりやすくて、以下のようなdiffがあった場合

+    return frotz(nitfol, two->ptr, 1, 0);
...
-    hit = frotz(nitfol, mf2.ptr, 1, 0);
  • -S frotzで検索をかけると、frontsの出現回数は変わってないのでマッチしない
  • -G frotzで検索をかけると、diffの中にfrotzという文字列は存在するのでマッチする

この差を意識しないと意図したcommitを探すことが出来ない。使い分けよう。