Lo he estado usando git stash pop
durante bastante tiempo. Recientemente me enteré del git stash apply
comando. Cuando lo probé, parecía funcionar igual que git stash pop
.
¿Cuál es la diferencia entre git stash pop
y git stash apply
?
Lo he estado usando git stash pop
durante bastante tiempo. Recientemente me enteré del git stash apply
comando. Cuando lo probé, parecía funcionar igual que git stash pop
.
¿Cuál es la diferencia entre git stash pop
y 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 drop
hacerlo).
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 pop
es git stash apply && git stash drop
.
git stash pop
el 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 master
rama y tenemos un archivo hello.txt
que 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 stash
sus cambios:
git stash
Se mudó a la otra rama, solucionó el error y ahora está listo para continuar 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 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 pop
lo tanto, es como el pop de la pila: en realidad elimina el elemento una vez que apply
aparece , mientras que es más como un vistazo .
En git
alijo hay un área de almacenamiento donde se pueden mover los archivos modificados actuales.
stash
El área es útil cuando desea extraer algunos cambios del git
repositorio y detectar algunos cambios en algunos archivos mutuos disponibles en el git
repositorio.
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 apply
solo aplique los cambios desde el área oculta mientrasgit pop
aplica, así como elimine los cambios desde elstash
área.
Git Stash Pop vs apply
Working
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
Stack
clasepop()
y lospeek()
métodos, donde pop cambia la parte superior por decrementos (top = top-1) peropeek()
solo puede obtener el elemento superior.