Portanto, se eu tiver um arquivo chamado foo.rb e ele estiver fornecendo um erro para um método ausente chamado bar , desejo pesquisar no histórico de foo.rb a string bar
para ver se ela já foi definida no passado.
Encontrei esta pesquisa em toda a história do Git por uma string?
Mas isso pesquisa todos os arquivos. Eu só quero procurar em um arquivo.
-- filename
a vários comandos git se quiser limitá-lo a um arquivo.Respostas:
Para esse fim, você pode usar a opção -S para git log:
fonte
git log -G'bar' -- foo.rb
procure por diff que contenha 'bar' em vez de confirmações que alteraram o número de ocorrências de 'bar' (consulte a página de manual do git-log).-Sbar
-lo para procurar bar . Talvez tenha algo a ver comigo usando a linha de comando do Windows.-G
é para uma pesquisa regex ... essa também é uma ótima referência: stackoverflow.com/a/4472267/2586761Ou talvez você possa tentar este (a partir de perguntas relacionadas Pesquise todo o histórico do git por string )
Na verdade, ele procurará o conteúdo do arquivo e não enviará mensagens / patches para qualquer ocorrência de barra.
fonte
for /F %i in ('git rev-list --all foo.rb') git grep -F bar %i foo.rb
(relógio para aspas duplas se nome do arquivo ou procurar frase tem espaços)for /F %i in ('git rev-list --all foo.rb') do git grep -F bar %i foo.rb
(observe aspas duplas se o nome do arquivo ou a frase de pesquisa tiver espaços)Há uma substituição para o comando git log (do manual ):
Então você pode usar:
fonte
--full-diff
não funciona (como em, não diff é mostrado), sem-p
, pelo menos no git 1.7.9.5Eu usei o
git log -S "string" --follow -p "path of file"
que mostra o histórico completo de todas as alterações com essa string.fonte