Stash

Sometimes, you don't want to commit your current work but need to switch to another branch

El comando git stash almacena temporalmente (o guarda en un stash) los cambios que hayas efectuado en el código en el que estás trabajando para que puedas trabajar en otra cosa y, más tarde, regresar y volver a aplicar los cambios más tarde. Guardar los cambios en stashes resulta práctico si tienes que cambiar rápidamente de contexto y ponerte con otra cosa, pero estás en medio de un cambio en el código y no lo tienes todo listo para confirmar los cambios.

Cómo guardar el trabajo en un stash

El comando git stash coge los cambios sin confirmar (tanto los que están preparados como los que no), los guarda aparte para usarlos más adelante y, acto seguido, los deshace en el código en el que estás trabajando.

git stash

Llegados a este punto, tienes libertad para hacer cambios, crear confirmaciones, cambiar de rama y efectuar cualesquiera otras operaciones de Git; y, luego, regresar y volver a aplicar el stash cuando lo tengas todo listo.

circle-exclamation

Cómo volver a aplicar los cambios de un stash

Puedes volver a aplicar los cambios de un stash mediante el comando

git stash pop

Al hacer pop del stash, se eliminan los cambios de este y se vuelven a aplicar en el código en el que estás trabajando.

Otra opción es volver a aplicar los cambios en el código en el que estás trabajando y conservarlos en tu stash mediante el comando

git stash apply

Esto resulta útil si quieres aplicar los mismos cambios de un stash en varias ramas.

Cómo gestionar varios stashes

No tienes por qué limitarte a un solo stash. De hecho, puedes ejecutar git stash varias veces para crear varios stashes y, luego, usar git stash list para verlos. De forma predeterminada, los stashes se identifican simplemente mediante el acrónimo "WIP" (o "work in progress", que significa "trabajo en curso") en la parte superior de la rama y la confirmación a partir de las cuales creaste el stash.

git stash list

Para contextualizar un poquito más, es recomendable comentar los stashes con una descripción mediante el comando:

Cómo crear una rama a partir de un stash

Si los cambios en la rama difieren de los cambios en el stash, podrías encontrarte con conflictos al hacer pop del stash o al aplicarlo. Lo que puedes hacer es usar git stash branch para crear una rama nueva en la que aplicar los cambios del stash.

De este modo, se extrae una rama nueva basada en la confirmación a partir de la cual creaste el stash y, después, se hace pop en ella con los cambios del stash.

Cómo limpiar el stash

Si decides que ya no necesitas algún stash en particular, puedes eliminarlo mediante el comando.

También tienes la opción de eliminar todos los stashes mediante el siguiente comando.

Last updated