Probar archivos inexistentes
En los pasos anteriores, usamos con éxito git ls-tree
y git log -- <file>
para inspeccionar un archivo que existe en nuestro repositorio de Git. Ahora, veamos qué sucede cuando intentamos usar estos comandos en un archivo que no existe en el historial del repositorio.
Asegúrate de que estás en el directorio de tu proyecto:
cd ~/project/my-time-machine
Primero, intentemos usar git ls-tree
en un archivo inexistente, por ejemplo, nonexistent.txt
:
git ls-tree HEAD nonexistent.txt
No deberías ver ninguna salida. Esto se debe a que git ls-tree
solo enumera las entradas que están presentes en el árbol especificado (en este caso, el árbol en HEAD
). Dado que nonexistent.txt
no está en el árbol del último commit, no muestra nada.
Ahora, intentemos usar git log
en el mismo archivo inexistente:
git log -- nonexistent.txt
Deberías ver una salida similar a esta:
fatal: no such path 'nonexistent.txt' in HEAD
¡Este es un comportamiento diferente! git log -- <file>
busca específicamente commits que hayan afectado la ruta del archivo dada a lo largo del historial. Si la ruta del archivo nunca ha existido en ningún commit, Git te dice que no hay "tal ruta".
Esta diferencia en el comportamiento destaca cómo funcionan estos comandos:
git ls-tree
inspecciona una instantánea específica (commit) y enumera su contenido.
git log -- <file>
busca en el historial completo los cambios relacionados con una ruta de archivo específica.
Comprender estas diferencias te ayuda a elegir el comando adecuado para la tarea. Si quieres ver qué archivos estaban en un commit, usa git ls-tree
. Si quieres ver el historial de un archivo, usa git log -- <file>
.