Como utilizar el comando stash para almacenar modificaciones temporalmente.
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.
> 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"
> 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
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
> 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
> 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
> 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
> git checkout stash@{0} -- file1
Este comando extraería el archivo file1 del stash con el indice 0 a la rama actual
Git | stash