Как выполнить Git коммитов diff или содержимого для определенного слова?

562
задан Jesper Rønn-Jensen 9 August 2014 в 03:01
поделиться

2 ответа

Если вы хотите найти все коммиты, в которых сообщение фиксации содержит заданное слово, используйте

$ 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 не будет (потому что количество вхождений этой строки не изменилось).

846
ответ дан 22 November 2019 в 22:07
поделиться

git log кирка найдет коммиты с изменениями, включая слово с git log -Sword

251
ответ дан 22 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: