У меня есть часть кода в другой, чем моя текущая ветвь в моем репозитории git, и я не уверен, какую фиксацию и какую ветвь. Как я могу выполнять поиск во всех файлах, которые я совершил до сих пор, для определенной строки (и затем показывает окружение этой строки кода)?
Git -Repo ищет String во всех зафиксированных файлах (неизвестная ветка и фиксация)
Ответ 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" в разделе "поиск" .)