Stash

Descripcion

Como utilizar el comando stash para almacenar modificaciones temporalmente.

Metodo

El comando stash de git nos permite almacenar cambios pendientes de commitear para aplicarlos posteriormente o simplemente descartarlos.

La manera en la que funciona el comando es guardando los cambios pendientes y despues de guardarlos restaura los archivos en la rama al estado del ultimo commit.

Guardar cambios en el stash:

> git stash

En el stash solo se guardarán los archivos que están trackeados y con cambios pendientes de hacer commit.

Una de las utilidades del stash es cuando queremos hacer un checkout a otra rama pero tenemos cambios en la rama actual y no se nos permite hacer el checkout hasta que comiteemos los cambios, pero quiza no queremos hacer un commit todavia, en esa situación podemos hacer un stash, los cambios se quedan guardados en la pila del stash y la rama es restaurada, de modo que no tendrá cambios pendientes de hacer commit, mas tarde si queremos podemos recuperar los cambios de stash

Si queremos darle un mensaje concreto al stash para que sea mas facil identificarlo en la pila del stash, podemos hacerlo de la siguiente manera:

> git stash save "Comentario del stash"

Recuperar cambios del stash:

> git stash pop

Esto cogerá los ultimos cambios almacenados en la pila del stash (el indice 0) y los aplicará sobre la rama actual, el comando pop ademas retira estos cambios almacenados de la pila del stash, si queremos aplicar los cambios y mantenerlos en la pila del stash lo hariamos con el siguiente comando:

> git stash apply

Consultar la pila del stash:

En el stash podemos almacenar varios cambios de varias ramas, o incluso varios cambios de una sola rama, a medida que vamos guardando en el stash, los nuevos cambios se van añadiendo a la pila, para consultar la pila del stash lo hacemos con el siguiente comando:

> git stash list

Si queremos aplicar unos cambios concretos del stash lo hacemos asi:

> git stash pop stash@{1}

Desde la version 2.11 podemos simplemente indicar el indice del stash

> git stash pop 1

Consultar archivos de cada stash almacenado

> git stash show 1

Este comando nos muestra los archivos contenidos en el stash con el indice 1, si no indicamos ningun numero despues de show se mostrará el indice 0.

Si ademas de ver los archivos contenidos en el stash queremos ver su contenido de las modificaciones en el archivo lo hacemos con el siguiente comando

> git stash show -p 1

Borrar el contenido de la pila del stash

> git stash clear

Este comando borrará toda la pila del stash, si queremos borrar un indice concreto lo haríamos así:

> git stash drop 4

Almacenar cambios de archivos no trackeados

> git stash -u

Por defecto cuando hacemos un stash solo se almacenan las modificaciones de archivos que estén trackeados, con la opcion -u almacenamos los cambios de los archivos trackeados y no trackeados

Extraer un solo archivo del stash

> git checkout stash@{0} -- file1

Este comando extraería el archivo file1 del stash con el indice 0 a la rama actual

Tags

Git | stash