Если вы хотите найти все коммиты, где сообщение о коммите содержит данное слово, используйте
$ git log --grep=word
Если вы хотите найти все коммиты, в которых «слово» было добавлено или удалено в содержимом файла (точнее: где изменилось число вхождений «слова»), т.е. выполните поиск по коммит содержимого , используйте так называемый поиск «кирки» с
$ 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
не будет (потому что число вхождений этой строки не изменилось).