Diferencia entre git stash pop y git stash apply
He estado usando git stash pop
durante bastante tiempo. Recientemente me enteré del comando git stash apply
. Cuando lo probé, parecía funcionar igual que git stash pop
.
¿Cuál es la diferencia entre git stash pop
y git stash apply
?
4 answers
git stash pop
arroja el alijo (superior, por defecto) después de aplicarlo, mientras que git stash apply
lo deja en la lista de alijos para su posible reutilización posterior (o puede entonces git stash drop
).
Esto sucede a menos que haya conflictos después de 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
.
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
2018-04-12 05:13:47
Tiene este enlace útil que indica la diferencia, como John Zwinck ha declarado y un inconveniente de Git stash pop.
Por ejemplo, digamos que los cambios guardados entran en conflicto con otros cambios que hayas realizado desde que creaste el alijo por primera vez. Tanto pop como apply activarán el modo de resolución de conflictos de merge, lo que te permitirá resolver estos conflictos muy bien... y ninguno de los dos se deshará del alijo, aunque quizás estés esperando que pop lo haga. Ya que mucha gente espera escondites para ser una pila simple, esto a menudo los lleva a hacer estallar el mismo alijo accidentalmente más tarde porque pensaron que se había ido.
Enlace http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful /
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-09-23 20:42:29
git stash pop
aplica el elemento top stashed y lo elimina de la pila. git stash apply
hace lo mismo, pero lo deja en la pila de alijos.
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-03-08 03:16:25
Verlo en acción podría ayudarte a entender mejor la diferencia.
Suponiendo que estamos trabajando en la rama master
y tenemos un archivo hello.txt
que contiene la cadena "Hello".
Vamos a modificar el archivo y agregarle la cadena "world". Ahora desea moverse a una rama diferente para corregir un error menor que acaba de encontrar, por lo que necesita stash
sus cambios:
git stash
Se movió a la otra rama, se corrigió el error y ahora está listo para continuar trabajando en su rama master
, por lo que usted pop
los cambios:
git stash pop
Ahora, si intentas revisar el contenido del alijo, obtendrás:
$ git stash show -p
No stash found.
Sin embargo, si usas git stash apply
en su lugar, obtendrás el contenido guardado, pero también lo conservará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
Así que pop
es igual que el pop de stack: en realidad elimina el elemento una vez que se abre, mientras que apply
es más como peek.
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
2016-11-30 12:27:06