Estoy trabajando en un cambio bastante grande en el cliente Ruby de Elasticsearch. La historia resumida es que el código de una de las gemas va a ser combinado en otra (#1274). Trabajando en ese código, moví muchos archivos de un lugar a otro, pero me resultaba importante mantener la historia o el git log de todos los archivos que moví.

Podemos usar el comando git mv aunque es lo mismo que mover los archivos, eliminar los originales del control de versiones con git rm y agregar los nuevos. Git va a reconocer el cambio como que “renombramos” los archivos. De Git FAQ: Git tiene un comando para renombrar git mvpero es sólo por conveniencia. El efecto es indistinguible de eliminar el archivo y agregar otro con distinto nombre pero el mismo contenido.

Ahora, después de haber movido varios archivos fui a verificar que la historia se mantuviera. Y en principio al usar git log, sólo veía desde el commit en que los había movido. Así que salí a buscar y encontré en la documentación de git log:

–follow
Seguir listando la historia de un archivo más allá de los renombres (funciona sólo para un archivo único).

Así que la historia sigue estando ahí, sólo que hay que usar git log --follow archivo.

2 comentarios en este post

Feed de comentarios
  1. Avatar

    grilix 25 mayo. 2021 - 13:16

    Vi el titulo y entré a ~trollear~ comentar que `git mv` es sólo por conveniencia, pero por suerte leí el resto así que no voy a decir nada.

    El `–follow` creo que nunca lo usé, bastante útil en ciertos contextos, gracias!

    Firefox 78.0 Windows NT

Dejar un comentario

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.

Toasty!