¿Cuál es el caso de uso previsto para git stash?

Resuelto Alexander Popov asked hace 11 años • 10 respuestas

Si trabajo en la rama A y de repente necesito trabajar en la rama B antes de estar listo con una confirmación en la rama A, guardo mis cambios en A, pago B, hago mi trabajo allí, luego pago A y aplico el alijo.

Si trabajo en A y quiero dejar de trabajar ese día, ¿debería guardar mi trabajo y luego aplicarlo al día siguiente (cuando reanude mi trabajo), o debería simplemente dejar las cosas como están: archivos modificados no confirmados en el ¿directorio de trabajo? No veo por qué necesitaría usar alijo en este caso, excepto si existe algún beneficio de seguridad.

Además, otro escenario: trabajo tanto en el trabajo como en casa. Si no estoy listo con un compromiso cuando quiero ir a casa, ¿puedo guardar mi trabajo, enviarlo a GitHub y luego retirarlo en casa?

Alexander Popov avatar Dec 12 '13 14:12 Alexander Popov
Aceptado

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

El único lugar donde me gusta guardar es si descubro que olvidé algo en mi última confirmación y ya comencé a trabajar en la 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 --amend

# back to work!
git stash pop
Mureinik avatar Dec 12 '2013 07:12 Mureinik

Dividiré la respuesta en tres párrafos.

Parte 1:

git stash(Para guardar los cambios no confirmados en un "alijo". Nota: ¡ esto elimina los cambios del árbol de trabajo!)

git checkout some_branch(cambiar a la rama prevista, en este caso some_branch)

git stash list(lista de escondites)

Puede ver:
stash@{0}: WIP en {branch_name}: {SHA-1 de la última confirmación} {última confirmación de su rama}
stash@{1}: WIP en master: 085b095c6 modificación para prueba

git stash apply(para aplicar el alijo al árbol de trabajo en la rama actual)

git stash apply stash@{12}(si va a tener muchos alijos, puede elegir qué alijo se aplicará; en este caso, aplicamos el alijo 12)

git stash drop stash@{0}(para eliminar de la lista de alijo, en este caso alijo 0)

git stash pop stash@{1}(para aplicar el alijo seleccionado y soltarlo de la lista de alijo)

Parte 2:
Puedes ocultar tus cambios con este comando pero no es necesario.
Puedes continuar al día siguiente sin alijo.
¡Estos comandos para ocultar sus cambios y trabajar en diferentes ramas o para implementar alguna realización de su código y guardarlo en escondites sin ramas y confirmar su caso personalizado!
Y luego puedes usar algunos de los alijos y comprobar cuál es mejor.

Parte 3:
comando Stash para ocultar localmente sus cambios.
Si quieres trabajar de forma remota debes comprometerte y presionar.

Olexander Yushko avatar Oct 18 '2019 08:10 Olexander Yushko