Git nos permite guardar en memoria los cambios sobre los que estamos trabajando en una rama sin necesidad de incluirlos en el área de trabajo del staging area y esto lo podemos hacer mediante el comando git stash que equivaldría a un git stash push.
Guardar cambios en un stash
git stash
Un stash es algo similar a un borrador, se trata de una forma rápida o sucia de preservar cambios en un espacio provisional de forma local con los que posteriormente podremos seguir trabajando.
Podemos tener varios borradores de nuestros cambios que podemos listar con el comando git stash list.
Listar stashes creados
git stash list
También podemos guardar un stash incluyendo un mensaje y poder diferenciarlo en el caso de que tengamos varios elementos en la lista de stashes.
Diferenciar stash con mensaje descriptivo
git stash save "mensaje descriptivo"
Para recuperar cambios de un stash tenemos varias opciones.
Recuperar cambios de un stash
Si lo que queremos es recuperar los últimos cambios desde el stash utilizaremos el siguiente comando:
git stash pop
O también podemos utilizar el siguiente comando:
git stash apply
Con ambos comandos podemos recuperar cambios de un stash específico.
git stash pop stash@{}
git stash apply stash@{}
Mostrar diferencias en un stash
Podemos ver las diferencias de un stash de forma resumida mediante el comando:
git stash show
O utilizar la opción -p (o –patch) para ver todas las diferencias de un stash:
git stash show -p
Al recuperar cambios de un stash éste no se elimina automáticamente por lo que es recomendable hacerlo de forma manual.
Para eliminar cambios tenemos varias opciones.
Eliminar cambios recientes
git stash drop
También podemos hacerlo especificando el índice de un stash en concreto.
git stash drop stash@{}
Eliminar todos los cambios
git stash clear