Git поиск строки в одной истории файлов

Итак, если у меня есть файл с именем foo.rb, и он дает мне ошибку для отсутствующего метода с именем bar, поэтому я хочу выполнить поиск в истории foo.rb для строки bar, чтобы узнать, когда-либо было определено в прошлом.

Я нашел этот Поиск всей истории Git для строки?

Но это ищет все файлы. Я просто хочу искать в одном файле.

Ответ 1

С этой целью вы можете использовать параметр -S для git log:

git log -S'bar' -- foo.rb

Ответ 2

Или, может быть, вы можете попробовать это (из связанных вопросов Искать всю историю git для строки)

git rev-list --all foo.rb | (
    while read revision; do
        git grep -F 'bar' $revision foo.rb
    done
)

На самом деле будет искать содержимое файла, а не фиксировать сообщения/патчи для любого появления бара.

Ответ 3

Там переопределение для команды git log (из руководство):

$ git log Makefile      # commits that modify Makefile

Итак, вы можете использовать:

git log foo.rb | grep "bar"