Moví un archivo usando git mv
. Ahora me gustaría hacer una diferencia en el nuevo archivo para compararlo con el archivo antiguo (con el nombre antiguo, ahora inexistente).
¿Cómo hago esto?
git
diff
file-rename
mv
Dr. Jerry
fuente
fuente
git diff -- yourRenamedFile
será suficiente. Vea mi respuesta a continuaciónRespuestas:
Debe usar -M para permitir que git detecte automáticamente el archivo movido cuando difiera. Usando solo
git diff
como knittl mencionado no funciona para mí.Así que simplemente:
git diff -M
debería hacerlo.La documentación para este cambio es:
fuente
~/.gitconfig
?git diff
. La ejecucióngit diff -M
en un solo archivo (renombrado) no informa un cambio de nombre.git log --follow -- file_after_move.txt
funciona bien. Muestra toda la historia, incluso antes de la mudanza. ¿Algunas ideas? Estoy funcionandogit version 2.11.0.windows.1
.-C
opción para detectar copias es útil y similar. Lo usé-M
para mirar una diferencia donde había refactorizado un archivo en dos (sin que ninguno de los nombres coincida con el original).Además de lo que knittl escribió , siempre puedes usar:
donde
HEAD:./oldfilename
significa oldfilename en el último commit (en HEAD), relativo al directorio actual.Si no tienes git lo suficientemente nuevo, deberías usar en su lugar:
fuente
git diff 39fa7c77e85c51d43ea0cf30d33aec8721812e9e:./oldfilename newfilename
git diff branch:old/filen.name newfilename
cd
al directorio y no agrega--
antes delcommit:path
par. Git parece ser muy exigente con la sintaxis aquí.<commit-ish>:<pathname>
sintaxis es un identificador de objeto, algo Git-ish; después de que--
Git solo espera nombres de archivo.Con git 2.9 (junio de 2016), no tendrá que agregar
-M
más.git diff
utiliza-M
por defecto.Ver commit 5404c11 , commit 9501d19 , commit a9276a6 , commit f07fc9e , commit 62df1e6 (25 de febrero de 2016) por Matthieu Moy (
moy
) .(Fusionada por Junio C Hamano -
gitster
- en commit 5d2a30d , 03 abr 2016)Las nuevas pruebas para esta función están aquí .
fuente
git diff -M
activa la detección de cambio de nombre como han dicho otros (y como señaló @VonC, se activa por defecto desde git 2.9). Pero si tiene un conjunto de cambios grande, la detección inexacta de cambio de nombre aún puede desactivarse nuevamente. Git mostrará una advertencia como la siguiente, que es fácil pasar por alto en medio de la diferencia que está viendo:En ese caso, configure la opción de configuración como sugiere git, por ejemplo
y vuelva a ejecutar su comando diff.
fuente
Por alguna razón, usar
HEAD:./oldfilename
(o ruta absoluta) no funcionó para mí, peroHEAD:oldfilename
sí (gracias cmn):HTH
fuente
HEAD:./oldfilename
?simplemente ejecute
git diff
sin ningún argumento, ogit 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)fuente
git mv
con un solo archivo y luego comparando el estado por etapas con otra rama idéntica producirá el diferencial "todo fue eliminado y recreado de nuevo" a menos que-M
se use.