Git tiene un área llamada "stash" donde puedes almacenar temporalmente una captura de tus cambios sin enviarlos al repositorio. Está separada del directorio de trabajo (working directory), del área de preparación (staging area), o del repositorio.

Esta funcionalidad es útil cuando has hecho cambios en una rama que no estás listo para realizarle commit, pero necesitas cambiar a otra rama.

Guardar cambios en el stash

Para guardar tus cambios en el stash, ejecuta el comando:

git stash save "mensaje opcional para ti"

Esto guarda los cambios y revierte el directorio de trabajo a como se veía en tu último commit. Los cambios guardados están disponibles en cualquier rama de ese repositorio.

Ten en cuenta que los cambios que quieras guardar deben estar en los archivos rastreados. Si has creado un nuevo archivo e intentas guardar tus cambios, puede que obtengas el error No local changes to save (No hay cambios locales que guardar).

Ver los cambios guardados en el stash

Para ver lo que hay en tu stash, ejecuta el comando:

git stash list

Esto devuelve una lista de tus capturas guardadas en el formato stash@{0}: RAMA-STASHED-CAMBIOS-SON-PARA: MESSAGE. La parte de stash@{0} es el nombre del stash, y el número en las llaves ({ }) es el índice (index) del stash. Si tienes múltiples conjuntos de cambios guardados en stash, cada uno tendrá un índice diferente.

Si olvidaste los cambios que hiciste en el stash, puedes ver un resumen de ellos con el comando git stash show NOMBRE-DEL-STASH. Si quieres ver el típico diseño "diff" (con los + y - en las líneas con los cambios), puedes incluir la opción -p (para parche o patch). Aquí tienes un ejemplo:

git stash show -p stash@{0}

# Ejemplo de un resultado:
diff --git a/PathToFile/fileA b/PathToFile/fileA
index 2417dd9..b2c9092 100644
--- a/PathToFile/fileA
+++ b/PathToFile/fileA
@@ -1,4 +1,4 @@
-What this line looks like on branch
+What this line looks like with stashed changes

Recuperar Cambios en Stash

Para recuperar los cambios del stash y aplicarlos a la rama actual en la que estás, tienes dos opciones:

  1. git stash apply NOMBRE-DEL-STASH aplica los cambios y deja una copia en el stash
  2. git stash pop NOMBRE-DEL-STASH aplica los cambio y elimina los archivos del stash

Puede haber conflictos cuando se aplican los cambios. Puedes resolver los conflictos de forma similar a un merge (ver git merge para más detalles).

Borrar los Cambios Guardados en Stash

Si quieres remover los cambios guardados en stash sin aplicarlos, ejecuta el comando:

git stash drop NOMBRE-DEL-STASH

Para limpiar todo del stash, ejecuta el comando:

git stash clear

Traducido del artículo - Git Stash Explained: How to Temporarily Store Local Changes in Git