Lo he estado usando git stash popdurante bastante tiempo. Recientemente me enteré del git stash applycomando. Cuando lo probé, parecía funcionar igual que git stash pop.
¿Cuál es la diferencia entre git stash popy git stash apply?
Lo he estado usando git stash popdurante bastante tiempo. Recientemente me enteré del git stash applycomando. Cuando lo probé, parecía funcionar igual que git stash pop.
¿Cuál es la diferencia entre git stash popy git stash apply?
Respuestas:
git stash pop tira el alijo (más alto, por defecto) después de aplicarlo, mientras que lo git stash apply deja en la lista de alijo para su posible reutilización posterior (o puede git stash drophacerlo).
Esto sucede a menos que haya conflictos después git stash pop, en cuyo caso no eliminará el alijo, dejando que se comporte exactamente igual git stash apply.
Otra forma de verlo: git stash popes git stash apply && git stash drop.
git stash popel resultado, aún obtendrá un error de conflicto.
Obtuve este enlace útil que establece la diferencia, como John Zwinck ha declarado y un inconveniente de git stash pop.
Por ejemplo, supongamos que sus cambios escondidos entran en conflicto con otros cambios que ha realizado desde que creó el escondite. Tanto pop como apply activarán útilmente el modo de resolución de conflictos de fusión, lo que le permitirá resolver dichos conflictos de forma agradable ... y ninguno de los dos eliminará el alijo, aunque quizás también esté esperando pop. Dado que muchas personas esperan que los escondites sean solo una pila simple, esto a menudo los lleva a reventar 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/
Verlo en acción podría ayudarlo a comprender mejor la diferencia.
Suponiendo que estamos trabajando en una masterrama y tenemos un archivo hello.txtque contiene la cadena "Hola".
Modifiquemos el archivo y agreguemos una cadena "mundial". Ahora desea pasar a una rama diferente para corregir un error menor que acaba de encontrar, por lo que necesita realizar stashsus cambios:
git stash
Se mudó a la otra rama, solucionó el error y ahora está listo para continuar trabajando en su masterrama, por lo que poplos cambios:
git stash pop
Ahora, si intentas revisar el contenido oculto, obtendrás:
$ git stash show -p
No stash found.
Sin embargo, si lo usa git stash apply, obtendrá el contenido oculto pero también lo mantendrá:
$ 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
Por poplo tanto, es como el pop de la pila: en realidad elimina el elemento una vez que applyaparece , mientras que es más como un vistazo .
En git alijo hay un área de almacenamiento donde se pueden mover los archivos modificados actuales.
stashEl área es útil cuando desea extraer algunos cambios del gitrepositorio y detectar algunos cambios en algunos archivos mutuos disponibles en el gitrepositorio.
git stash apply //apply the changes without removing stored files from stash area.
git stash pop // apply the changes as well as remove stored files from stash area.
Nota: -
git applysolo aplique los cambios desde el área oculta mientrasgit popaplica, así como elimine los cambios desde elstashárea.
Git Stash Pop vs applyWorking
Si desea aplicar sus cambios escondidos principales al cambio actual no escalonado y eliminar ese alijo también, entonces debe hacerlo git stash pop.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Pero si desea aplicar sus cambios escondidos principales al cambio actual sin etapas sin eliminarlo, entonces debe hacerlo git stash apply.
Nota: Puede relacionar este caso con la
Stackclasepop()y lospeek()métodos, donde pop cambia la parte superior por decrementos (top = top-1) peropeek()solo puede obtener el elemento superior.