Git -Repo ищет String во всех зафиксированных файлах (неизвестная ветка и фиксация)

У меня есть часть кода в другой, чем моя текущая ветвь в моем репозитории git, и я не уверен, какую фиксацию и какую ветвь. Как я могу выполнять поиск во всех файлах, которые я совершил до сих пор, для определенной строки (и затем показывает окружение этой строки кода)?

Ответ 1

Используйте git grep, чтобы найти фиксацию:

git grep "string" $(git rev-list --all)

git rev-list --all выполняет поиск всей истории проекта.

Это даст результат следующим образом:

<commit>:<path>:<matched line>

Затем вы можете использовать git branch --contains, чтобы узнать, в какую ветвь включена фиксация:

git branch --contains <commit>

Ответ 2

измените ветвь на git branch "branch-name", а затем выполните git grep "specific string" в корне репозитория. если у вас слишком много веток, это должно сделать вас там достаточно быстро.

Ответ 3

Если приведенное выше отклонение git grep "string" дает вам слишком длинные "списки", вы можете использовать git log -S. Опция -S ищет содержимое файлов, которые были совершены:

git log -Sstring  # look for string in every file of every commit
git log -Sstring -- path/to/file  # only look at the history of the named file

(Подробнее в книге "Pro Git" в разделе "поиск" .)