Cuando muevo un archivo en git usando git-mv, el estado muestra que el archivo ha sido renombrado e incluso si modifico algunas partes, todavía considera que es casi lo mismo (lo cual es bueno porque me permite seguir el historial del mismo) .
Cuando copio un archivo, el archivo original tiene algo de historial que me gustaría asociar con la nueva copia.
He intentado mover el archivo y luego intentar volver a pagar en la ubicación original; una vez movido, git no me deja pagar la ubicación original.
He intentado hacer una copia del sistema de archivos y luego agregar el archivo: git lo enumera como un archivo nuevo.
¿Hay alguna manera de hacer que git grabe una operación de copia de archivo de una manera similar a cómo registra un cambio de nombre / movimiento de archivo donde el historial se puede rastrear hasta el archivo original?
diff.renames
encopies
(por ejemplo, 'git config diff.renames copies
'). Estoy de acuerdo en que es un poco contradictorio.git log -L123,456:file.xyz
) que sigue correctamente los cambios de nombre, pero no las copias, y no puede pasar - siga en ese caso; Además, AFAICT, esto no funciona con culpa git.2020-05-19: La siguiente solución tiene las ventajas de no cambiar el registro del archivo original, no crear un conflicto de fusión y ser más corto.
Puede forzar a Git a detectar el historial del archivo copiado en tres confirmaciones:
--no-ff
.(Los créditos van a Raymond Chen ).
La solución anterior tenía cuatro confirmaciones:
(Solución tomada de https://stackoverflow.com/a/44036771/1389680 .)
fuente
move
yrename
?mv
para ambas operaciones? Estaba usando 'mover' para el caso que puede implicar cambiar el directorio del archivo, y 'cambiar el nombre' para el caso donde no lo hace.git mv orig new
? Por "leído el original", ¿quieres decircp new orig && git add orig
?