El comando Git stash en Git
Lección 20 / 53
Git Guía Git Guía Git español
El comando git stash se usa para dejar de lado todos los cambios actuales no confirmados, para recuperarlos en un momento posterior. En la práctica, se utiliza en todas aquellas ocasiones en las que se han realizado una serie de cambios "WIP" (work in progress), aún no es momento de comprometerse, pero es necesario volver temporalmente a una situación "limpia".
$ git status
On branch master
Changes to be committed:
modified: style.css
Changes not staged for commit:
modified: index.html
$ git stash
Saved working directory and index state WIP on master: c5dfcdb add new logo
$ git status
On branch master
nothing to commit, working tree clean
Los cambios (staged y non staged) reservados se guardan en el stack de los stash y se pueden volver a aplicar en un momento posterior.
Nota: el stash es parte del propio repository local, no se envían al server remoto.
Para utilizar de la mejor manera posible los stash es necesario recordar algunas cosas:
- no se está limitado a guardar un solo stash, cada vez que se reserva un stash va a la parte superior de la pila de stash
- es posible recuperar el último stash guardado quitándolo de la pila con git stash pop o dejándolo en la pila con git stash apply
- es posible recuperar uno de los stash anteriores usando su índice git stash pop stash@{2} (0 el más reciente)
- en el stash van a parar como default solo los cambios realizados en los archivos rastreados, pero es posible usar la opción git stash -u para incluir también los archivos untracked
$ git stash list
stash@{0}: WIP on main: 5002d47 our new homepage
stash@{1}: WIP on main: 5002d47 our new homepage
stash@{2}: WIP on main: 5002d47 our new homepage
La pila de los stash nos permite saber contra que branch y commit ha sido creado el único stash (nota: la pila de los stash es del repository, entonces se pueden encontrar stash desde branch locales diferentes)
Algunas acciones comunes trabajando con stash:
- git stash drop stash@{1} - elimina un determinado stash (1)
- git stash clear - elimina todos los stash
- git stash show -p - muestra el diff de uno stash (nota: rispecto al commit/branch a partir del cual fue “creado”, no con respecto a la actual working copy)
Anterior
19 El comando Git diff ..Siguiente
21 .gitignore : los arc..