Так что, если у меня есть файл с именем foo.rb, и он выдает ошибку для отсутствующего метода с именем bar , я хочу поискать в истории foo.rb строку, bar
чтобы узнать, была ли она когда-либо определена в прошлом.
Я нашел этот Поиск всей истории Git для строки?
Но это ищет все файлы. Я просто хочу искать в одном файле.
-- filename
к куче команд git, если хотите ограничить его одним файлом.Ответы:
Для этого вы можете использовать опцию -S для git log:
источник
git log -G'bar' -- foo.rb
искать diff, который содержит 'bar', а не коммиты, которые изменили количество вхождений 'bar' (см. Страницу руководства git-log).-Sbar
его для поиска бара . Может быть, это как-то связано со мной с помощью командной строки Windows.-G
для поиска по регулярным выражениям ... это тоже отличная ссылка: stackoverflow.com/a/4472267/2586761Или, может быть, вы можете попробовать это (из связанных вопросов Поиск всей истории git для строки )
На самом деле он будет искать содержимое файла, а не фиксировать сообщения / патчи для любого появления бара.
источник
for /F %i in ('git rev-list --all foo.rb') git grep -F bar %i foo.rb
(следите за двойными кавычками, если в имени файла или поисковой фразе есть пробелы)for /F %i in ('git rev-list --all foo.rb') do git grep -F bar %i foo.rb
(следите за двойными кавычками, если в имени файла или поисковой фразе есть пробелы)Для команды git log есть переопределение (из руководства ):
Таким образом, вы можете использовать:
источник
--full-diff
, не работает (как, в отличие от , не отображается diff)-p
, по крайней мере, на git 1.7.9.5Я использовал,
git log -S "string" --follow -p "path of file"
который показывает полную историю всех изменений с этой строкой.источник