Если вы хотите найти все коммиты, в которых сообщение фиксации содержит заданное слово, используйте
$ git log --grep=word
. Если вы хотите найти все коммиты, в которых «слово» было добавлено или удалено в содержимое файла (точнее: где изменилось количество вхождений слова), то есть поиск в содержимом коммита , используйте так называемый поиск «киркой» с
$ git log -Sword
В современный git также
$ git log -Gword
ищет отличий , добавленная или удаленная строка которых соответствует слову «word» (также содержимое фиксации ).
Обратите внимание, что -G
по умолчанию принимает регулярное выражение, а -S
принимает строку, но может быть изменен для приема регулярных выражений с помощью - pickaxe-regex
.
Чтобы проиллюстрировать разницу между
-S <регулярное выражение>--pickaxe-regex
и-G
, рассмотрите фиксацию со следующей разницей в том же файле:+ return! regexec (regexp, two-> ptr, 1, & regmatch, 0); ... - hit =! regexec (regexp, mf2.ptr, 1, & regmatch, 0);
В то время как
git log -G "regexec \ (regexp"
будет отображать эту фиксацию,git log -S "regexec \ (regexp" --pickaxe-regex
не будет (потому что количество вхождений этой строки не изменилось).
git log
кирка найдет коммиты с изменениями, включая слово с git log -Sword