El comando Git stash en Git


Lección 20 / 53

El comando Git stash en Git

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)
Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad