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
: activardiff.renames
por defectoRenombrar 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 dediff.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.
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)