Cómo comprobar si un stash de Git contiene cambios específicos

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 inspeccionar el contenido de un stash de Git para determinar si contiene cambios específicos. Comenzaremos realizando y guardando algunos cambios en un repositorio de muestra.

Luego, utilizarás el comando git stash show -p para ver la diferencia detallada del stash más reciente, lo que te permitirá ver las líneas exactas que se agregaron, eliminaron o modificaron. Finalmente, explorarás cómo examinar múltiples stashes para encontrar los cambios que estás buscando.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") subgraph Lab Skills git/diff -.-> lab-560103{{"Cómo comprobar si un stash de Git contiene cambios específicos"}} git/stash -.-> lab-560103{{"Cómo comprobar si un stash de Git contiene cambios específicos"}} end

Ejecutar git stash show -p

En este paso, aprenderemos cómo inspeccionar los cambios almacenados en un stash de Git. Cuando se utiliza git stash, Git guarda los cambios no confirmados. Para ver exactamente lo que se guardó, se puede utilizar el comando git stash show.

Primero, hagamos algunos cambios en un archivo en nuestro repositorio my-time-machine. Navega de nuevo al directorio si no estás ya allí:

cd ~/project/my-time-machine

Ahora, agreguemos nuevo contenido al archivo message.txt. Utilizaremos el comando echo con >> para anexar al archivo, de modo que no sobrescribamos el contenido existente.

echo "Adding a new line for stashing." >> message.txt

Puedes verificar el contenido del archivo utilizando cat:

cat message.txt

Deberías ver tanto la línea original como la nueva línea:

Hello, Future Me
Adding a new line for stashing.

Ahora, guardemos estos cambios en un stash. Recuerda, guardar en un stash guarda tus cambios no confirmados para que puedas trabajar en otra cosa y volver a ellos más tarde.

git stash save "Added a line for stashing demo"

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

Saved working tree and index state On branch master: Added a line for stashing demo

Ahora que los cambios están guardados en un stash, utilicemos git stash show para ver lo que hay en el stash.

git stash show

Este comando te da un resumen de los cambios en el stash más reciente. Puedes ver una salida como esta:

 message.txt | 1 +
 1 file changed, 1 insertion(+)

Esto nos dice que un archivo (message.txt) fue modificado y que hubo una inserción (una nueva línea).

Para ver el contenido real de los cambios, necesitamos agregar la bandera -p (que significa patch). Esto nos mostrará la diferencia, al igual que git diff.

git stash show -p

Este comando mostrará las líneas exactas que se agregaron, eliminaron o modificaron en los cambios guardados en el stash. La salida se parecerá a una diferencia estándar de Git:

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

Las líneas que comienzan con + indican adiciones. En este caso, agregamos la línea "Adding a new line for stashing."

Utilizar git stash show -p es crucial para entender lo que hay en un stash antes de decidir aplicarlo o eliminarlo. Te ayuda a confirmar que el stash contiene los cambios que esperas.

Buscar cambios en la diferencia del stash

En el paso anterior, utilizamos git stash show -p para ver los cambios en un stash. A veces, la salida de la diferencia puede ser muy larga, especialmente en proyectos grandes. En tales casos, es posible que desees buscar cambios específicos dentro de la diferencia del stash.

La salida de la diferencia de Git es simplemente texto, por lo que puedes canalizarla a herramientas estándar de la línea de comandos de Linux como grep para buscar patrones.

Intentemos buscar la línea que agregamos en el paso anterior: "Adding a new line for stashing."

Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.

cd ~/project/my-time-machine

Ahora, ejecuta el comando git stash show -p y canaliza su salida a grep. Buscaremos la palabra "stashing".

git stash show -p | grep "stashing"

Deberías ver la línea que contiene la palabra "stashing" en la salida de la diferencia:

+Adding a new line for stashing.

Esto demuestra cómo se puede utilizar grep para filtrar la salida de git stash show -p y encontrar líneas o patrones específicos dentro de los cambios guardados en el stash.

Puedes utilizar cualquiera de las opciones de grep para refinar tu búsqueda. Por ejemplo, podrías utilizar -i para una búsqueda insensible a mayúsculas y minúsculas, o -C para mostrar líneas de contexto alrededor de la coincidencia.

Ser capaz de buscar en la diferencia del stash es una técnica poderosa, especialmente cuando tienes múltiples stashes o stashes grandes. Te ayuda a localizar rápidamente los cambios que te interesan sin tener que desplazarte manualmente por toda la salida de la diferencia.

Probar múltiples stashes

En escenarios del mundo real, es posible que necesites guardar cambios en un stash varias veces. Git te permite tener múltiples stashes, y se gestionan como una pila. El stash más reciente está en la cima de la pila, referido como stash@{0}. Los stashes más antiguos son stash@{1}, stash@{2}, y así sucesivamente.

Vamos a crear otro conjunto de cambios y guardarlos en un stash para ver cómo funciona esto.

Primero, asegúrate de que estás en el directorio ~/project/my-time-machine.

cd ~/project/my-time-machine

Ahora, agreguemos una línea diferente al archivo message.txt:

echo "Adding a second line for another stash." >> message.txt

Verifica el contenido:

cat message.txt

Ahora deberías ver tres líneas:

Hello, Future Me
Adding a new line for stashing.
Adding a second line for another stash.

Ahora, guarda estos nuevos cambios en un stash:

git stash save "Added a second line for stashing demo"

Deberías ver una salida que indique el nuevo stash:

Saved working tree and index state On branch master: Added a second line for stashing demo

Para ver la lista de stashes que tienes, utiliza el comando git stash list:

git stash list

Deberías ver algo como esto:

stash@{0}: On master: Added a second line for stashing demo
stash@{1}: On master: Added a line for stashing demo

Observa que el stash más reciente ("Added a second line...") es stash@{0}, y el anterior ("Added a line...") es stash@{1}.

Puedes utilizar git stash show -p con el identificador del stash para ver el contenido de un stash específico. Por ejemplo, para ver el primer stash que creamos (stash@{1}):

git stash show -p stash@{1}

Esto te mostrará la diferencia de los cambios en stash@{1}:

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
 Hello, Future Me
+Adding a new line for stashing.

Y para ver el stash más reciente (stash@{0}):

git stash show -p stash@{0}

Esto te mostrará la diferencia de los cambios en stash@{0}:

diff --git a/message.txt b/message.txt
index <some_hash>..<some_hash> 100644
--- a/message.txt
+++ b/message.txt
@@ -2 +2,2 @@
 Adding a new line for stashing.
+Adding a second line for another stash.

Ser capaz de gestionar múltiples stashes e inspeccionar su contenido individualmente es muy útil cuando estás manejando diferentes tareas o experimentos.

Resumen

En este laboratorio (lab), aprendimos cómo inspeccionar el contenido de un stash de Git utilizando el comando git stash show. Comenzamos realizando cambios en un archivo y luego guardamos esos cambios en un stash con un mensaje descriptivo utilizando git stash save. Luego, utilizamos git stash show para obtener un resumen de los cambios y, lo que es más importante, git stash show -p para ver la diferencia detallada de los cambios guardados en el stash, lo que nos permitió ver las líneas exactas que se agregaron o modificaron.

Los pasos posteriores, que no se detallaron completamente en el contenido proporcionado, probablemente implicarían buscar cambios específicos en la diferencia del stash y probar múltiples stashes para entender cómo inspeccionar diferentes stashes en la pila. Este proceso es crucial para verificar que un stash contiene las modificaciones esperadas antes de aplicarlo o eliminarlo.