Как искать git историю для исчезнувшей строки?

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

Более подробная информация: это история моего списка todo из нашего незвездного программного обеспечения для отслеживания задач. Я держу его в течение двух лет, потому что в программном обеспечении мне не хватает информации. К сожалению, в моих сообщениях с сообщением есть только идентификаторы задач, и что мне нужно сделать, это найти закрытую задачу по теме, а не по номеру. Да, реальное решение - лучшее программное обеспечение для отслеживания задач, но это полностью из моих рук.

Ответы

Ответ 1

Это работа для кирки!

Из git -log manpage:

-S<string>

Ищите различия, которые вводят или удаляют экземпляр <string>. Обратите внимание, что это отличается от строки, просто появляющейся на выходе diff; см. запись кирка в gitdiffcore (7) для более подробной информации.

Вы можете, конечно, использовать дополнительные параметры, чтобы сузить его, например:

git log -Sfoobar --since=2008.1.1 --until=2009.1.1 -- path_containing_change

Разве это не очень полезно?

Ответ 2

Как насчет git log --stat | grep 'filename' начать сужать его?