コミットメッセージに特定の単語が含まれているすべてのコミットを検索する場合は、
$ git log --grep=word
ファイルの内容で「単語」が追加または削除されたすべてのコミットを検索する場合(より正確には、「単語」の出現回数が変更された場合)、つまり、コミットの内容を検索するには、いわゆる「pickaxe」検索を使用します。
$ git log -Sword
現代のgitにもあります
$ git log -Gword
追加または削除された行が「単語」と一致する違いを探す(内容をコミットする))。
は-G
デフォルトで正規表現を-S
受け入れますが、文字列は受け入れますが、を使用して正規表現を受け入れるように変更できます--pickaxe-regex
。
-S<regex> --pickaxe-regex
との違いを説明するため-G<regex>
に、同じファイルに次のdiffがあるコミットを考えます。
+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
一方でgit log -G"regexec\(regexp"
このコミット表示され、git log -S"regexec\(regexp" --pickaxe-regex
(その文字列の出現回数が変更されていないため)しません。
Git 2.25.1(2020年2月)では、これらの正規表現を中心にドキュメントが明確になっています。
MartinÅgren( ``)によるcommit 9299f84(2020年2月6日)を参照してください。(合併によりJunio C浜野- -で0d11410コミットし、2020年2月12日)を
gitster
報告者:Adam Dinwoodie
署名者:MartinÅgren査読者
:Taylor Blau
-G
と-S
(を使用して--pickaxe-regex
)の違いを例示するときは、git diff
「regexec」、「regexp」、「regmatch」などを含むdiffと呼び出しの例を使用してそうします。
例は正しいですが、私たちの主張を本当に必要としない限り、「regex。*」を書くことを避けることで、もつれを解きやすくすることができます。
代わりに、作成された正規表現ではない単語を使用してください。
の git diff
ドキュメントが今含まれています:
-S<regex> --pickaxe-regex
と
の違いを説明する-G<regex>
に、同じファイルに次のdiffがあるコミットを考えます。
+ return frotz(nitfol, two->ptr, 1, 0);
...
- hit = frotz(nitfol, mf2.ptr, 1, 0);
一方でgit log -G"frotz\(nitfol"
このコミット表示され、git log
-S"frotz\(nitfol" --pickaxe-regex
(その文字列の出現回数が変更されていないため)しません。