ver tipos tag modificados log etiquetas crear archivos git diff file-rename mv

tipos - git ver archivos modificados



¿Cómo hacer un git diff en el archivo movido/renombrado? (5)

Moví un archivo usando git mv . Ahora me gustaría hacer una diferencia en el nuevo archivo para compararlo con el archivo anterior (con el nombre antiguo, ahora inexistente).

¿Cómo hago esto?


Además de lo que escribió knittl , siempre puedes usar:

git diff HEAD:./oldfilename newfilename

donde HEAD:./oldfilename significa oldfilename en el último commit (en HEAD), relativo al directorio actual.

Si no tienes suficiente nuevo git, deberías usar en su lugar:

git diff HEAD:path/to/oldfilename newfilename


Con git 2.9 (junio de 2016), ya no tendrás que agregar -M . git diff usa -M por defecto.

Ver commit 5404c11 , commit 9501d19 , commit a9276a6 , commit f07fc9e , commit 62df1e6 (25 Feb 2016) por Matthieu Moy ( moy ) .
(Fusionado por Junio ​​C Hamano - gitster - en commit 5d2a30d , 03 abr 2016)

diff : activar diff.renames por defecto

Renombrar la detección es una característica muy conveniente, y los nuevos usuarios no deberían tener que excavar en la documentación para beneficiarse de ella.

Las posibles objeciones a la activación de la detección de cambio de nombre son que a veces falla, y a veces es lento. Pero la detección de cambio de nombre ya está activada de forma predeterminada en varios casos, como " git status " y " git merge ", por lo que la activación de diff.renames no cambia fundamentalmente la situación. Cuando la detección de cambio de nombre falla, ahora falla constantemente entre " git diff " y " git status ".

Esta configuración no afecta los comandos de fontanería, por lo tanto, los guiones bien escritos no se verán afectados.

Las nuevas pruebas para esta característica están aquí .


Necesita usar -M para permitir que git detecte automáticamente el archivo movido cuando se difiera. Usar simplemente git diff como mencionó knittl no funciona para mí.

Así que simplemente: git diff -M debería hacerlo.

La documentación para este cambio es:

-M[<n>], --find-renames[=<n>] Detect renames. If n is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file’s size). For example, -M90% means git should consider a delete/add pair to be a rename if more than 90% of the file hasn’t changed.


Por el motivo que sea usando HEAD:./oldfilename (o ruta absoluta) no funcionó para mí, pero HEAD:oldfilename did (gracias cmn):

git diff HEAD:oldfilename newfilename git diff 2a80f45:oldfilename f65f3b3:newfilename

HTH


simplemente ejecute git diff sin ningún argumento, o git diff -- newfilename . git es lo suficientemente inteligente como para comparar los archivos / contenidos correctos (es decir, contenido original antes de cambiar el nombre con contenido alterado después de cambiar el nombre)