ver tipos tag modificados log etiquetas ejemplo crear cambios archivos archivo git file copy

tag - tipos de etiquetas en git



Grabar la operaciĆ³n de copia de archivos con Git (2)

Cuando muevo un archivo en git usando git-mv, el estado muestra que el archivo ha sido renombrado e incluso si alterno algunas partes, todavía considera que es casi lo mismo (lo cual es bueno porque me permite seguir el historial) .

Cuando copio un archivo, el archivo original tiene un historial que me gustaría asociar con la nueva copia.

Intenté mover el archivo y luego intentar volver a realizar la compra en la ubicación original. Una vez que moví git, no me dejaré registrar la ubicación original.

He intentado hacer una copia del sistema de archivos y luego agregar el archivo - git lo cataloga como un nuevo archivo.

¿Hay alguna manera de hacer que git grabe una operación de copia de archivo de forma similar a cómo registra un archivo rename / move donde el historial se puede remontar al archivo original?


Puede obligar a Git a detectar el historial del archivo copiado:

  • En lugar de copiar, cambie a una nueva rama y mueva el archivo a su nueva ubicación allí.
  • Cambie a la rama original y cambie el nombre del archivo.
  • Combina la nueva rama en la rama original, resolviendo el conflicto trivial manteniendo ambos archivos.
  • Restaure el nombre de archivo original en una confirmación separada.

(Solución tomada de https://.com/a/44036771/1389680 .)


Git no renombra el seguimiento ni copia el seguimiento, lo que significa que no registra los cambios de nombre o las copias. Lo que hace en cambio es cambiar el nombre y copiar la detección . Puede solicitar la detección de cambio de nombre en git diff (y git show ) utilizando la opción -M , puede solicitar detección de copia adicional en archivos modificados utilizando la opción -C ( -C implica -M ), y puede solicitar una copia más costosa detección entre todos los archivos con --find-copies-harder o -C -C (lo que implica -C , que implica -M ). Ver la página de git-diff .

También puede configurar git para que siempre cambie el nombre de la detección estableciendo los diff.renames de los diff.renames un valor verdadero booleano (por ejemplo, true o 1 ), y puede solicitar a git que también realice la detección de copia estableciéndolo para copy o copy . Ver la página de git-config .

Verifique también la opción -l para git diff y la variable de configuración relacionada diff.renameLimit .

Tenga en cuenta que git log <pathspec> funciona de manera diferente en Git: aquí <pathspec> es un conjunto de delimitadores de ruta, donde ruta puede ser un (sub) nombre de directorio. Filtra y simplifica el historial antes de que el cambio de nombre y la detección de copias entren en juego. Si desea seguir el cambio de nombre y las copias, utilice git log --follow <filename> (que actualmente es un poco limitado, y funciona solo para un solo archivo).