Как найти «потерянный» код в git - PullRequest
8 голосов
/ 22 ноября 2010

Однажды один плохой парень удалил константу из исходного кода, управляемого через репозиторий GIT.

Никто не замечал этого долгое время .... до сих пор.

Тем не менее, я хочу выяснить, в каком коммите эта константа исчезла, и кто плохой парень.

Я знаю только имя константы, которое было FOOBAR.

Какой-то лучший подход, как git blame --reverse?

Ответы [ 2 ]

16 голосов
/ 22 ноября 2010

Это будет список всех коммитов, которые добавили или удалили строку FOOBAR из любого файла:

git log --all -p -SFOOBAR
0 голосов
/ 22 ноября 2010

git log подобно git log -- path/to/file/with/constant должны получить все коммиты, которые когда-либо касались этого файла.Если файл меняется не так часто, и ваша команда имеет привычку писать хорошие сообщения о коммите, то это должно помочь вам начать.

Как только вы найдете ревизию, где он исчез, у вас есть нарушитель.*

Другой вариант будет git bisect для поиска оскорбительного коммита с использованием шаблона двоичного поиска, если файл сильно меняется.Что-то вроде:

$ git bisect start
$ git bisect bad
$ git bisect good <known-good-rev>
$ fgrep -Hn "FOOBAR" file
# Ah it is good!
$ git bisect good
$ fgrep -Hn "FOOBAR" file
# Ah it is bad!
$ git bisect bad

Продолжайте следовать инструкциям, пока не найдете ревизию, которая привела к ошибке.Прочитайте справочную страницу для получения более подробных инструкций.Другим хорошим ресурсом для чтения будет соответствующий раздел Pro Git .

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...