¿Cuándo debo usar git stash?


Si trabajo en la rama A y de repente necesito trabajar en la rama B antes de estar listo con un commit en la rama A, guardo mis cambios en A, checkout B, hago mi trabajo allí, luego checkout A y aplico el stash.

Si trabajo en A y quiero dejar de trabajar por el día, debo guardar mi trabajo y luego aplicarlo al día siguiente, cuando reanude mi trabajo, o simplemente debo dejar las cosas como están: archivos modificados sin confirmar en el directorio de trabajo. No veo por qué necesitaría usar stash en esto. caso, excepto si hay algún beneficio de seguridad.

También, otro escenario - trabajo tanto en el trabajo como en casa. Si no estoy listo con un commit cuando quiero ir a casa, ¿puedo guardar mi trabajo, empujarlo a GitHub y luego tirar de ese alijo en casa?

Author: random, 2013-12-12

3 answers

Stash es solo un método de conveniencia. Dado que las ramas son tan baratas y fáciles de administrar en git, personalmente casi siempre prefiero crear una nueva rama temporal que almacenar, pero es una cuestión de gustos sobre todo.

El único lugar que me gusta almacenar es si descubro que olvidé algo en mi último commit y ya he comenzado a trabajar en el siguiente en la misma rama:

# Assume the latest commit was already done
# start working on the next patch, and discovered I was missing something

# stash away the current mess I made
git stash save

# some changes in the working dir

# and now add them to the last commit:
git add -u
git commit --ammend

# back to work!
git stash pop
 44
Author: Mureinik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-12 07:27:54

El comando stash guardará cualquier cambio que haya realizado desde su última confirmación. En tu caso no hay razón para esconderte si vas a seguir trabajando en ello al día siguiente. Solo usaría stash para deshacer los cambios que no quieres confirmar.

 1
Author: Severin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-12 09:19:51

Si presionas git stash cuando tienes cambios en la copia de trabajo (no en el área de preparación), git creará un objeto escondido y lo empujará a la pila de escondites (al igual que hiciste git checkout -- . pero no perderás los cambios). Más tarde, se puede pop desde la parte superior de la pila.

 1
Author: gyorgyabraham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-12 09:20:43