Entonces, si tengo un archivo llamado foo.rb y me está dando un error por un método faltante llamado bar , entonces quiero buscar en el historial de foo.rb la cadena bar
para ver si alguna vez se definió en el pasado.
Encontré esto ¿ Buscar en todo el historial de Git una cadena?
Pero esto busca todos los archivos. Solo quiero buscar en un archivo.
-- filename
un montón de comandos git si desea limitarlo a un archivo.Respuestas:
Para este propósito, puede usar la opción -S para git log:
fuente
git log -G'bar' -- foo.rb
para buscar diferencias que contengan 'barra' en lugar de confirmaciones que cambiaron el número de ocurrencias de 'barra' (consulte la página de manual de git-log).-Sbar
para buscar la barra . Tal vez tenga algo que ver conmigo usando la línea de comandos de Windows.-G
es para una búsqueda de expresiones regulares ... esta también es una gran referencia: stackoverflow.com/a/4472267/2586761O tal vez puedes probar este (de preguntas relacionadas Buscar en todo el historial de git por cadena )
En realidad, buscará el contenido del archivo y no enviará mensajes / parches para cualquier ocurrencia de la barra.
fuente
for /F %i in ('git rev-list --all foo.rb') git grep -F bar %i foo.rb
(busque comillas dobles si el nombre de archivo o la frase de búsqueda tienen espacios)for /F %i in ('git rev-list --all foo.rb') do git grep -F bar %i foo.rb
(busque comillas dobles si el nombre de archivo o la frase de búsqueda tienen espacios)Hay una anulación para el comando git log (del manual ):
Entonces podrías usar:
fuente
--full-diff
no funciona (como en, no se muestra ninguna diferencia) sin-p
, al menos en git 1.7.9.5Usé lo
git log -S "string" --follow -p "path of file"
que muestra el historial completo de todos los cambios con esa cadena.fuente