Как в Git найти и показать коммиты с файлами содержащими определенное слово?

В Git есть несколько способов найти и показать коммиты, содержащие определенное слово в файлах. Рассмотрим два основных метода.

1. Использование команды git log с параметром --grep. Этот способ позволяет осуществить поиск только по коммитам, а не по содержимому файлов. Однако, можно комбинировать этот метод со вторым способом, чтобы найти коммиты, содержащие определенное слово в файлах.

Команда git log --grep=<word> покажет только те коммиты, заголовки которых содержат указанное слово. Если вы хотите найти коммиты, содержащие указанное слово внутри измененных файлов, вы можете добавить параметры --stat и --pickaxe-regex.

Команда будет выглядеть следующим образом:

   git log --grep=<word> --stat -p -G<word>

<word> - это искомое слово.

Такая команда покажет не только список коммитов с указанным словом, но и измененные файлы и перед патч файлы (diff).

2. Использование команды git grep. Этот метод позволяет искать слово непосредственно в содержимом файлов.

Команда git grep <word> позволяет найти все вхождения слова во всех файлах Git-репозитория. Для ограничения поиска только определенным коммитам, добавьте параметр --all. Например:

   git grep <word> --all

<word> - это искомое слово.

Если вы хотите ограничить поиск только измененными файлами в определенном коммите, вы можете добавить параметр --cached для поиска только в индексированных (cached) файлах, или добавить идентификатор коммита после параметра --:

   git grep <word> --cached
   git grep <word> <commit_id> --

<commit_id> - это идентификатор коммита, в котором вы хотите найти искомое слово.

Помните, что для этого метода нужно знать конкретный коммит, в котором может содержаться искомое слово. Если вы не знаете коммит, где находится слово, то может быть полезнее использовать первый метод с параметрами --grep и --pickaxe-regex.

В целом выбор метода зависит от специфики вашей задачи. Если вам известен конкретный коммит, где может находиться искомое слово, вам лучше воспользоваться вторым методом (git grep). Если более важно найти все коммиты, содержащие слово, то первый метод (git log --grep) будет более подходящим.