Introducción
En este laboratorio, aprenderás cómo verificar si se agregó un archivo en un commit específico de Git. Explorarás diferentes comandos de Git para inspeccionar los detalles de los commits e identificar los archivos recién agregados.
Comenzarás utilizando git show --name-status para ver un resumen conciso de los cambios en un commit, buscando específicamente el estado 'A' que indica un archivo agregado. Luego, aprenderás cómo usar git diff-tree con opciones relevantes para lograr un resultado similar, lo cual es especialmente útil para scripting (programación de scripts) y escenarios avanzados. Finalmente, diferenciarás entre archivos modificados y agregados dentro del historial de commits.
Ejecuta git show --name-status
En este paso, exploraremos cómo ver los detalles de un commit específico, incluyendo qué archivos se cambiaron y cómo. Utilizaremos el comando git show con la opción --name-status.
Primero, asegúrate de estar en el directorio my-time-machine:
cd ~/project/my-time-machine
Ahora, usemos git show para ver el commit que hicimos en el laboratorio anterior. Podemos usar el alias HEAD para referirnos al commit más reciente:
git show --name-status HEAD
Deberías ver una salida similar a esta:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
A message.txt
Desglosemos esta salida:
- La primera parte muestra los detalles del commit, similar a lo que viste con
git log. - La línea
A message.txtes la parte importante aquí.Asignifica "Agregado". Esto nos dice que el archivomessage.txtse agregó en este commit.message.txtes el nombre del archivo que se afectó.
La opción --name-status es muy útil porque te da un resumen conciso de los cambios introducidos por un commit, mostrando solo los nombres de los archivos y su estado (Agregado, Modificado, Eliminado, etc.). Esto es más rápido que ver la diferencia completa si solo quieres saber qué archivos estuvieron involucrados.
Comprender cómo inspeccionar los commits es crucial para navegar por el historial de tu proyecto y entender cómo ha evolucionado.
Utiliza git diff-tree para archivos agregados
En este paso, usaremos otro comando, git diff-tree, para ver los cambios introducidos por un commit. Mientras que git show es excelente para ver los detalles completos del commit y la diferencia, git diff-tree es útil para scripting (programación de scripts) y escenarios más avanzados.
Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.
Usaremos git diff-tree con las opciones -r (recursivo) y --name-status, seguidas del hash del commit. Puedes obtener el hash del commit de la salida de git log o git show. Para nuestro primer commit, también podemos usar HEAD.
git diff-tree -r --name-status HEAD
Deberías ver una salida similar a esta:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 A message.txt
Veamos la salida:
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9es el hash del commit.Aindica el estado del cambio del archivo (Agregado).message.txtes el nombre del archivo.
Esta salida es muy similar a la parte --name-status de git show. Para un commit sencillo como nuestro primer commit (que solo agregó un archivo), la salida es casi idéntica. Sin embargo, git diff-tree es más flexible y se puede usar para comparar diferentes árboles (instantáneas) en tu repositorio, no solo commits.
Por ahora, la principal idea es que tanto git show --name-status como git diff-tree -r --name-status pueden mostrarte qué archivos se cambiaron y cómo en un commit dado. Esta es una habilidad fundamental para entender la historia de tu proyecto.
Probar archivos modificados vs archivos agregados
En los pasos anteriores, vimos cómo git show --name-status y git diff-tree --name-status muestran una A para un archivo agregado. Ahora, veamos cómo se comportan cuando un archivo se modifica.
Primero, asegúrate de estar en el directorio ~/project/my-time-machine.
Vamos a agregar otra línea a nuestro archivo message.txt:
echo "Hello again, Future Me" >> message.txt
El operador >> agrega el texto al archivo existente.
Ahora, veamos el estado de nuestro repositorio:
git status
Deberías ver una salida que indique que message.txt ha sido modificado:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: message.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git identifica correctamente que el archivo ha sido modificado.
Ahora, preparemos (stage) este cambio:
git add message.txt
Y veamos el estado nuevamente:
git status
La salida ahora debería mostrar que el cambio está preparado (staged):
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Observa que, aunque agregamos contenido, Git registra esto como un archivo modificado porque el archivo ya existía en el commit anterior.
Finalmente, confirmemos (commit) este cambio:
git commit -m "Add another message to the future"
Deberías ver una salida que confirme el commit:
[master a1b2c3d] Add another message to the future
1 file changed, 1 insertion(+)
Ahora tenemos un nuevo commit. Usemos git show --name-status en el commit más reciente (HEAD) para ver el estado:
git show --name-status HEAD
La salida será similar a esta:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:05:00 2023 +0000
Add another message to the future
M message.txt
Observa la M antes de message.txt. Esto indica que el archivo fue Modificado en este commit.
De manera similar, si usas git diff-tree -r --name-status HEAD, también verás el estado M.
Esta distinción entre A (Agregado) y M (Modificado) es importante para entender la historia de tus archivos en Git. A significa que el archivo se creó en ese commit, mientras que M significa que el archivo existía antes y su contenido se cambió.
Resumen
En este laboratorio, aprendimos cómo verificar si un archivo se agregó en un commit de Git. Primero exploramos el comando git show --name-status, que proporciona un resumen conciso de los cambios en un commit, incluyendo el estado (como 'A' para Agregado) y el nombre de los archivos afectados. Esta es una forma rápida de ver qué archivos estuvieron involucrados en un commit sin ver la diferencia completa.
Luego introdujimos el comando git diff-tree con las opciones -r y --name-status como un método alternativo para inspeccionar los cambios de un commit, especialmente útil para scripting (programación de scripts) y escenarios avanzados. Aunque no se proporcionaron todos los detalles de este paso, la introducción indica que su propósito es explorar más cómo identificar archivos agregados dentro de un commit utilizando un comando de Git diferente.



