Cómo comprobar si se ha aplicado un stash de Git

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 comprobar si un stash de Git se ha aplicado correctamente a tu directorio de trabajo. Exploraremos la interacción entre el comando git stash y el estado del repositorio, demostrando cómo verificar los cambios aplicados y distinguirlos de los stashes no aplicados.

A través de pasos prácticos, utilizarás git status para observar el estado de tu directorio de trabajo antes y después de hacer un stash y aplicar cambios. También utilizarás git stash list para gestionar e inspeccionar las entradas de tu stash, asegurándote de poder determinar con confianza el estado de aplicación de tu trabajo guardado en el stash.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/status -.-> lab-560105{{"Cómo comprobar si se ha aplicado un stash de Git"}} git/stash -.-> lab-560105{{"Cómo comprobar si se ha aplicado un stash de Git"}} git/restore -.-> lab-560105{{"Cómo comprobar si se ha aplicado un stash de Git"}} end

Comprobar el estado de Git para cambios aplicados

En este paso, exploraremos cómo el comando stash de Git interactúa con el directorio de trabajo y cómo comprobar el estado de tu repositorio después de aplicar un stash.

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y navega hasta el directorio my-time-machine:

cd ~/project/my-time-machine

Ahora, creemos un nuevo archivo y agreguemos algo de contenido para simular tener cambios no confirmados:

echo "This is a new feature." > feature.txt
echo "Adding some more content." >> message.txt

Ahora hemos creado un nuevo archivo feature.txt y modificado el archivo existente message.txt. Veamos cómo Git ve estos cambios utilizando git status:

git status

Deberías ver una salida que indique que feature.txt no está siendo rastreado y 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

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

no changes added to commit (use "git add" and/or "git commit -a")

Ahora, hagamos un stash de estos cambios. Hacer un stash es como poner tu trabajo actual a un lado temporalmente para poder cambiar a otra cosa sin confirmar cambios incompletos.

git stash save "Work in progress"

Deberías ver una salida que confirme que el stash se ha guardado:

Saved working tree and index state On master: Work in progress

Tu directorio de trabajo ahora debería estar limpio, como si no hubieras realizado esos cambios. Puedes verificar esto con git status:

git status

La salida debería mostrar un directorio de trabajo limpio:

On branch master
nothing to commit, working tree clean

Ahora, apliquemos el stash que acabamos de crear. Aplicar un stash devuelve los cambios guardados en el stash a tu directorio de trabajo.

git stash apply

Deberías ver una salida que indique que los cambios se han aplicado:

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

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

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)

Finalmente, comprobemos el git status nuevamente para ver el estado de nuestro directorio de trabajo después de aplicar el stash.

git status

La salida debería mostrar que los cambios del stash ahora están de vuelta en tu directorio de trabajo, apareciendo como archivos modificados y no rastreados, tal como antes de hacer el stash. Esto confirma que git stash apply devuelve los cambios sin agregarlos automáticamente al área de preparación o confirmarlos.

Ejecutar git stash list para verificar

En este paso, aprenderemos cómo ver la lista de stashes que hemos guardado utilizando el comando git stash list. Este comando es útil para llevar un registro de tu trabajo temporal.

Asegúrate de seguir estando en el directorio ~/project/my-time-machine.

En el paso anterior, creamos un stash. Veámoslo en la lista de stashes. Escribe el siguiente comando:

git stash list

Deberías ver una salida similar a esta:

stash@{0}: On master: Work in progress

Esta salida nos muestra que tenemos un stash guardado. stash@{0} es el identificador de este stash específico. El número entre llaves indica su posición en la lista de stashes (0 es el más reciente). "On master" nos dice en qué rama (branch) estábamos cuando creamos el stash, y "Work in progress" es el mensaje que proporcionamos cuando guardamos el stash.

Si tuvieras múltiples stashes, se listarían aquí, siendo stash@{0} el más reciente, stash@{1} el siguiente más reciente, y así sucesivamente.

El comando git stash list es esencial para gestionar tus stashes. Te permite ver qué stashes tienes disponibles y te ayuda a identificar el que deseas aplicar o eliminar.

Comprender cómo listar tus stashes es el primer paso para utilizar de manera efectiva la función de stash para gestionar tu trabajo en progreso.

Probar stashes no aplicados

En este paso, confirmaremos que aplicar un stash no lo elimina de la lista de stashes. Esta es una distinción importante entre git stash apply y git stash pop.

Asegúrate de seguir estando en el directorio ~/project/my-time-machine.

En los pasos anteriores, creamos un stash y luego lo aplicamos. Vamos a comprobar la lista de stashes nuevamente para ver si el stash todavía está allí.

git stash list

Deberías ver la misma salida que antes:

stash@{0}: On master: Work in progress

Como puedes ver, incluso después de aplicar el stash, sigue estando en la lista de stashes. Esto significa que puedes aplicar el mismo stash múltiples veces si es necesario, aunque este no es un flujo de trabajo común.

Si quisieras aplicar el stash y también eliminarlo de la lista, utilizarías el comando git stash pop en lugar de git stash apply. pop es como aplicar los cambios y luego eliminar inmediatamente el stash.

Vamos a demostrar git stash pop. Primero, asegúrate de que tu directorio de trabajo esté limpio. Dado que aplicamos el stash, tenemos cambios no confirmados. Podemos confirmarlos o descartarlos para esta demostración. Vamos a descartarlos para volver a un estado limpio.

git restore .

Este comando descarta todos los cambios en el directorio de trabajo. Ahora, comprueba el estado:

git status

La salida debería mostrar un directorio de trabajo limpio:

On branch master
nothing to commit, working tree clean

Ahora, vamos a usar git stash pop para aplicar el stash y eliminarlo de la lista.

git stash pop

Deberías ver una salida que indique que el stash se aplicó y luego se eliminó:

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

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

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)

Finalmente, vamos a comprobar la lista de stashes nuevamente:

git stash list

Esta vez, no deberías ver ninguna salida, lo que indica que la lista de stashes está vacía:

Esto confirma que git stash pop elimina el stash después de aplicarlo, mientras que git stash apply lo deja en la lista. Comprender la diferencia entre apply y pop es crucial para gestionar tus stashes de manera efectiva.

Resumen

En este laboratorio (lab), aprendimos cómo comprobar si un stash de Git se ha aplicado correctamente al directorio de trabajo. Comenzamos creando y guardando cambios en un proyecto, luego usamos git status para observar el estado del directorio de trabajo antes y después de guardar y aplicar el stash. Un directorio de trabajo limpio después de aplicar un stash indica que los cambios se recuperaron correctamente.

También exploramos el uso de git stash list para ver la lista de stashes disponibles y confirmar que un stash se elimina de la lista después de haber sido aplicado utilizando git stash apply o git stash pop. Esto proporciona una forma clara de verificar que un stash específico ya no está pendiente de aplicación.