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?


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}

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!


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}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.