Cómo verificar si un repositorio de Git tiene cambios preparados (staged)

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo verificar si un repositorio de Git tiene cambios preparados (staged). Utilizarás el comando git status para ver los archivos preparados y comprender su salida, que indica el estado actual de tu repositorio, incluyendo archivos modificados, preparados y no rastreados.

Además, explorarás cómo usar git diff --cached para examinar los cambios específicos que actualmente se encuentran en el área de preparación (staging area), lo que te permitirá verificar las diferencias entre los cambios preparados y no preparados en tu repositorio.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") subgraph Lab Skills git/add -.-> lab-560089{{"Cómo verificar si un repositorio de Git tiene cambios preparados (staged)"}} git/status -.-> lab-560089{{"Cómo verificar si un repositorio de Git tiene cambios preparados (staged)"}} git/diff -.-> lab-560089{{"Cómo verificar si un repositorio de Git tiene cambios preparados (staged)"}} end

Usar git status para Ver Archivos Preparados (Staged)

En este paso, usaremos nuevamente el comando git status para ver cómo Git rastrea los cambios después de haber agregado un archivo.

Primero, asegúrate de estar en el directorio my-time-machine. Si no lo estás, utiliza el comando cd:

cd ~/project/my-time-machine

Ahora, creemos un nuevo archivo llamado notes.txt y agreguemos algo de contenido a él:

echo "Ideas for the future" > notes.txt

Este comando crea el archivo notes.txt con el texto especificado.

A continuación, indiquemos a Git que queremos rastrear este nuevo archivo. Para esto, usamos el comando git add:

git add notes.txt

Este comando agrega notes.txt al área de preparación (staging area). El área de preparación es como una sala de espera para los cambios antes de que se confirmen (committed).

Ahora, comprobemos el estado de nuestro repositorio utilizando git status:

git status

Deberías ver una salida similar a esta:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   notes.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

Observa que la salida ahora muestra notes.txt bajo "Changes to be committed". Esto significa que el archivo está en el área de preparación, listo para ser incluido en el próximo commit.

También es posible que veas message.txt enumerado bajo "Untracked files". Esto se debe a que aún no hemos confirmado (committed) los cambios en message.txt desde los pasos anteriores. Git nos está mostrando que todavía hay cambios en el directorio de trabajo que no se están rastreando para el próximo commit.

Comprender la salida de git status es crucial. Te dice el estado actual de tu repositorio, mostrando qué archivos se han modificado, cuáles están preparados para ser confirmados (staged) y cuáles no se están rastreando. Esto te ayuda a llevar un registro de tu trabajo y a decidir qué incluir en tu próximo punto de guardado.

Verificar los Cambios con git diff --cached

En este paso, aprenderemos cómo ver los cambios exactos que actualmente se encuentran en el área de preparación (staging area) utilizando el comando git diff --cached.

Recuerda del paso anterior que agregamos notes.txt al área de preparación. Ahora, veamos qué cambios está listo para confirmar (commit) Git.

Asegúrate de estar en el directorio ~/project/my-time-machine:

cd ~/project/my-time-machine

Ahora, ejecuta el siguiente comando:

git diff --cached

Deberías ver una salida similar a esta:

diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Ideas for the future

Esta salida muestra la diferencia entre el área de preparación y el último commit. Dado que esta es la primera vez que estamos preparando (staging) notes.txt, Git lo muestra como un nuevo archivo.

Desglosemos la salida:

  • diff --git a/notes.txt b/notes.txt: Esta línea indica que estamos comparando dos versiones del archivo notes.txt.
  • new file mode 100644: Esto muestra que notes.txt es un nuevo archivo.
  • index 0000000..a1b2c3d: Estos son identificadores internos de Git para el contenido del archivo.
  • --- /dev/null: Esto representa el estado "vacío" antes de que se agregara el archivo.
  • +++ b/notes.txt: Esto representa el estado actual del archivo en el área de preparación.
  • @@ -0,0 +1 @@: Este es un encabezado que indica las líneas que han cambiado. -0,0 significa que no había líneas en el estado original (vacío), y +1 significa que se ha agregado una línea en el nuevo estado.
  • +Ideas for the future: El signo más + indica que esta línea se ha agregado.

El comando git diff --cached es increíblemente útil para revisar tus cambios preparados antes de confirmarlos (commit). Te permite verificar exactamente lo que estás a punto de guardar en la historia de tu proyecto. Esto ayuda a evitar confirmar accidentalmente cambios no deseados.

Presiona q para salir de la vista de diferencias y volver a la línea de comandos.

Verificar Cambios Preparados (Staged) vs No Preparados (Unstaged)

En este paso, exploraremos más a fondo la diferencia entre los cambios preparados (staged) y los no preparados (unstaged) modificando un archivo que ya está siendo rastreado por Git.

Primero, asegúrate de estar en el directorio ~/project/my-time-machine:

cd ~/project/my-time-machine

Ahora, agreguemos otra línea a nuestro archivo notes.txt. Podemos usar el comando echo con >> para agregar texto a un archivo existente:

echo "Another idea" >> notes.txt

Este comando agrega la línea "Another idea" al final de notes.txt.

Veamos el estado de nuestro repositorio nuevamente:

git status

Deberías ver una salida similar a esta:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   notes.txt

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:   notes.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        message.txt

Observa que notes.txt ahora aparece en dos secciones:

  1. Changes to be committed: Esto se refiere a la versión de notes.txt que agregamos al área de preparación en el paso anterior (que solo contenía "Ideas for the future").
  2. Changes not staged for commit: Esto se refiere a los cambios que acabamos de hacer en notes.txt (agregar "Another idea"). Estos cambios están en nuestro directorio de trabajo pero aún no se han agregado al área de preparación.

Este es un concepto clave en Git: el área de preparación contiene una instantánea de los cambios que están listos para el próximo commit, mientras que el directorio de trabajo contiene el estado actual de tus archivos, incluyendo cambios que aún no se han preparado.

Para ver la diferencia entre el directorio de trabajo y el área de preparación, puedes usar el comando git diff sin opciones:

git diff

Esto mostrará los cambios que no están preparados. Deberías ver una salida que muestre la línea "Another idea" siendo agregada.

Para ver la diferencia entre el área de preparación y el último commit (que vimos en el paso anterior), se utiliza git diff --cached.

Comprender la diferencia entre los cambios preparados y los no preparados, y cómo verlos con git status y git diff, es fundamental para usar Git de manera efectiva. Te da un control preciso sobre lo que se incluye en cada commit.

Resumen

En este laboratorio, aprendimos cómo verificar si un repositorio de Git tiene cambios preparados (staged). Comenzamos utilizando el comando git status para ver el estado actual del repositorio, incluyendo los archivos que se han agregado al área de preparación. Vimos cómo git status indica claramente qué archivos están en "Changes to be committed" (Cambios listos para ser confirmados).

A continuación, exploramos el comando git diff --cached para ver específicamente las diferencias entre los cambios preparados y el último commit. Esto nos permitió ver las modificaciones exactas del contenido que están listas para ser confirmadas. Finalmente, reforzamos la distinción entre cambios preparados y no preparados, entendiendo que git status proporciona una visión general mientras que git diff --cached muestra el contenido detallado de los cambios preparados.