Git история - найти потерянную линию по ключевому слову
У меня где-то в моем репозитории Git была строка, содержащая слово "Foo", несколько сотен транзакций раньше.
Если есть какой-либо способ найти номер его пересмотра, где он был в последний раз, не покупая FishEye?
Ответ 1
Это можно решить с помощью опции pickaxe (-S) gitlog
git log -SFoo -- path_containing_change
(вы даже можете добавить временной диапазон: --since=2009.1.1 --until=2010.1.1)
-S<string>
Найдите различия, которые вводят или удаляют экземпляр <string>. Обратите внимание, что это отличается от строки, просто появляющейся на выходе diff; более подробную информацию см. в записи кирки в gitdiffcore (7).
diffcore-pickaxe
Это преобразование используется для поиска файлов, представляющих изменения, которые касаются указанной строки. Когда используется diffcore-pickaxe, он проверяет, есть ли файлы, чья "оригинальная" сторона имеет указанную строку и чья "результат" - нет. Такой файл файл представляет "строку, появившуюся в этом наборе изменений". Он также проверяет противоположный случай, который теряет указанную строку.
Этот список команд журналов фиксирует, что добавляет или удаляет заданную строку поиска/регулярное выражение (обычно) более позднее. Опция -p (--patch) вызывает отображение соответствующего diff, где шаблон был добавлен или удален, поэтому вы можете увидеть его в контексте.
Найдя соответствующий коммит, который добавляет текст, который вы искали (например, 8beeff00d), найдите ветки, содержащие commit: