Pregunta Se aplica la diferencia entre git stash pop y git stash


He estado usando git stash pop por algun tiempo. Recientemente descubrí sobre el git stash apply mando. Cuando lo probé, parecía funcionar igual que git stash pop.

Cuál es la diferencia entre git stash pop y git stash apply?


593
2018-03-08 03:14


origen


Respuestas:


git stash pop  lanza lejos el (más alto, por defecto) alijo después de aplicarlo, mientras que git stash apply  lo deja en la lista oculta para una posible reutilización posterior (o puede entonces git stash drop eso).

Esto sucede a menos que haya conflictos después git stash pop, en este caso, no eliminará el alijo, comportándose exactamente como git stash apply.

Otra forma de verlo: git stash pop es git stash apply && git stash drop.


927
2018-03-08 03:15



Obtuve este útil enlace que establece la diferencia, como ha declarado John Zwinck y una desventaja de Git stash pop.

Por ejemplo, supongamos que sus cambios ocultos entran en conflicto con otros cambios que haya realizado desde que creó el alijo por primera vez. Tanto pop como aplicar te ayudarán a fusionar el modo de resolución de conflictos, lo que te permitirá resolver esos conflictos ... y ninguno de los dos se deshace del alijo, aunque tal vez esperes algo. Dado que muchas personas esperan que los escondites simplemente sean una pila simple, esto a menudo lleva a que aparezcan el mismo alijo accidentalmente más tarde porque pensaron que se había ido.

Enlazar http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/


64
2017-09-23 20:42



git stash pop aplica el elemento escondido superior y lo elimina de la pila. git stash apply hace lo mismo, pero lo deja en la pila de alijo.


39
2018-03-08 03:16



Verlo en acción podría ayudarlo a comprender mejor la diferencia.

Suponiendo que estamos trabajando en master rama y tener un archivo hello.txt que contiene la cadena "Hola".

Modifiquemos el archivo y agreguemos una cadena "mundial" a él. Ahora desea pasar a una rama diferente para corregir un error menor que acaba de encontrar, por lo que necesita stash tus cambios:

git stash

Se mudó a la otra rama, solucionó el error y ahora está listo para seguir trabajando en su master rama, por lo que pop los cambios:

git stash pop

Ahora, si intentas revisar el contenido oculto, obtendrás:

$ git stash show -p
No stash found.

Sin embargo, si usa git stash apply en cambio, obtendrás el contenido escondido pero también lo mantendrás:

$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world

Asi que pop es como el pop de la pila: en realidad elimina el elemento una vez que se ha reventado, mientras apply es más como ojeada.


17
2017-11-30 12:27