Git alijo dos veces

94

Tuve que cambiar rápidamente las ramas de git, así que corrí git stash, pero tuve que ejecutarlo nuevamente porque uno de mis archivos necesitaba editarse.

Así que lo ejecuté git stashdos veces y estoy listo para volver a editar mis archivos. Corrí, git stash applypero no estoy convencido de que todos los archivos que había guardado estuvieran sin guardar. ¿Hay algo que pueda hacer? ¿Alguna forma de comprobarlo?

Cuando corro git stash show, solo veo el último de mis dos escondites de git.

¿Hay alguna forma de mostrar todo git stashes?

Stephenmurdoch
fuente
4
git stash list. Si hiciste dos escondites, llama git stash popdos veces.
Felix Kling
Hola, lo arreglaste! Deberías ponerlo como respuesta. Muchas gracias
stephenmurdoch

Respuestas:

169

Puede obtener una lista de todos los alijos con

git stash list

que te mostrará algo como

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Si hiciste dos escondites, simplemente llama git stash popdos veces. A diferencia de git stash apply, popaplica y elimina el último alijo.

También puede hacer referencia a un alijo específico, p. Ej.

git stash show stash@{1}

o

git stash apply stash@{1}
Felix Kling
fuente
Muchas gracias. Salvó mi día.
stephenmurdoch
25
Si quieres hacerlo git stash popdos veces porque quieres ambos alijos en la misma confirmación pero encuentras el "error: Tus cambios locales en los siguientes archivos se sobrescribirán mediante la combinación:" en tu segundo git stash pop, entonces puedes: 1) git stash pop, 2) git add .y 3 ) git stash pop.
gabe
Eso me ayudó. Necesitaba hacer "git stash" y luego "git stash --all" para guardar algunos archivos nuevos sin seguimiento. Hacer git stash pop dos veces no funcionaba. Solo recuperé el último alijo.
Leopold Kristjansson
0

Me encontré con esta situación, hice dos escondites y git stash pop acaba de sacar el último escondite. Así que lo hice

git stash list

git stash pop stash@{1}

¡Esto sacó mi primer alijo y pude ver todos mis cambios!

Waaheeda
fuente
0

Hiciste algunas preguntas diferentes en la publicación y otros encuestados dieron buenas respuestas a algunas de ellas. El que parece más importante pero no ha sido respondido es este:

>> No estoy convencido de que todos los archivos que tenía guardados estuvieran sin guardar. ¿Hay algo que pueda hacer? ¿Alguna forma de comprobarlo?

Compare el alijo con el árbol local

Creo que lo que quieres hacer es comparar el alijo con tu árbol de trabajo local . Puede poner el interruptor -p en el comando stash y estará bien:

git stash show -p

Si hay uno en particular que está buscando, simplemente use su nombre de reserva de git o su identificación de la lista de reserva:

git stash show -p stash@{3}

¿Quizás usar el diff?

Si está realmente interesado en impulsar sus habilidades de git, siempre puede optar por una diferencia. Para ver la diferencia entre lo que hay en el alijo y lo que está registrado en HEAD en la rama maestra, se podría usar la siguiente diferencia:

git diff stash@ master

Otro comando ordenado para mostrarle los cambios de los elementos en el historial de alijo que pueden ser útiles es --stat:

git stash list --stat

Pero creo que la respuesta simple es la respuesta correcta. Simplemente use el interruptor -p y probablemente verá si el alijo que guardó se ha recuperado.

 git stash show -p stash@{3}
Cameron McKenzie
fuente