2010-07-30 6 views
5

Tengo un archivo de texto (.yml) que ingreso algunos textos para el uso de mi sistema. Pero ahora necesitamos saber qué líneas nuevas a la vez. Pensé usar git para resolver nuestro problema, pero no puedo encontrar un comando claro para hacer esto.Usando git diff en el mismo archivo entre la primera y la última confirmación

¿Esto es posible?

+0

posible duplicado de [Git:? Cómo diff el mismo archivo entre dos confirmaciones diferentes en la misma rama] (http://stackoverflow.com/questions/3338126/git -how-to-diff-the-same-file-between-two-different-commits-on-the-same-branch) –

Respuesta

11

Usted puede obtener una lista de las confirmaciones withs algo así:

git log --abbrev-commit --pretty=oneline

que debe algo como esto:

commitD Description 
commitC Description 
commitB Description 
commitA Description 

Elija sus dos confirmaciones y sustituirlos a continuación:

git diff <commitA>..<commitB> -- /path/to/file

+0

¡resolvió mi problema, por ejemplo! –

3

Puede hacerlo con una línea de comandos:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

No funciona para usar --reverse con un recuento de 1 (-1/--max-recuento 1) ... ya que invierte la lista resultante después de truncarlo. Entonces, o bien usa --reverse junto con el comando head o usa tail -1.

Tuve que agregar el -w para mi uso debido a los interruptores en los finales de línea y el uso de tabuladores frente a espacios.

¡Esto puede no funcionar como se esperaba si el archivo no se agregó en la primera confirmación! Es posible cambiar la línea anterior a:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file> 
Cuestiones relacionadas