Ejecutar git log --follow -- Archivo
En este paso, exploraremos cómo realizar un seguimiento del historial de un archivo específico, incluso si se ha renombrado. Aquí es donde el comando git log --follow
resulta útil.
Primero, asegúrate de estar en el directorio de tu proyecto.
cd ~/project/my-time-machine
Ahora, creemos un nuevo archivo y agreguemos algo de contenido.
echo "This is the original content." > original_file.txt
Agreguemos y confirmemos (commit) este archivo.
git add original_file.txt
git commit -m "Add original file"
Deberías ver una salida similar a esta:
[master 1a2b3c4] Add original file
1 file changed, 1 insertion(+)
create mode 100644 original_file.txt
Ahora, renombrémos el archivo.
git mv original_file.txt renamed_file.txt
Verifiquemos el estado para ver el cambio.
git status
Deberías ver algo como esto:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: original_file.txt -> renamed_file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
Confirmemos (commit) el renombrado.
git commit -m "Rename original file"
Deberías ver una salida similar a esta:
[master 5d6e7f8] Rename original file
1 file changed, 0 insertions(+), 0 deletions(-)
rename original_file.txt -> renamed_file.txt (100%)
Ahora, usemos git log
para ver el historial del archivo renombrado.
git log renamed_file.txt
Esto solo mostrará la confirmación (commit) donde se renombró el archivo. Para ver el historial antes del renombrado, necesitamos usar la opción --follow
.
git log --follow renamed_file.txt
Este comando mostrará el historial del archivo, siguiendo sus cambios de nombre. Deberías ver tanto la confirmación (commit) "Rename original file" como la confirmación (commit) "Add original file".
El comando git log --follow
es esencial cuando necesitas entender el historial completo de un archivo que se ha movido o renombrado dentro de tu repositorio. Te ayuda a rastrear la evolución del archivo a través de diferentes confirmaciones (commits), independientemente de su nombre actual.