A diferença entre o git stash pop e o git stash aplica-se

Eu tenho usado {[[0]} há algum tempo. Descobri recentemente sobre o comando git stash apply. Quando o experimentei, parecia funcionar da mesma forma que ele.

Qual é a diferença entre git stash pop e git stash apply?

 627
Author: User 00000, 2013-03-08

4 answers

git stash pop deita fora o stash (no topo, por omissão) depois de o aplicar, enquanto que git stash apply deixa-o na lista de stash para uma possível reutilização posterior (ou você pode então git stash drop isso).

Isto acontece a menos que haja conflitos após {[[0]}, Neste caso, não irá remover o stash, comportando-se exactamente como git stash apply.

Outra maneira de ver isto: {[[0]} é git stash apply && git stash drop.

 983
Author: John Zwinck, 2018-04-12 05:13:47

Tenho esta ligação útil que diz a diferença, como John Zwinck afirmou e uma desvantagem do git stash pop.

Por exemplo, diga que as suas alterações escondidas entram em conflito com outras alterações que fez desde que criou o stash. Tanto o pop como o apply irão ajudar a activar o modo de resolução de conflitos, permitindo-lhe resolver esses conflitos de forma simpática... e nenhum deles irá livrar-se do stash, mesmo que esteja à espera que o pop o faça. Já que muitas pessoas esperam stashes para ser apenas uma pilha simples, isso muitas vezes leva a eles popping o mesmo stash acidentalmente mais tarde, porque eles pensaram que tinha desaparecido.

Ligação http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/

 65
Author: briankip, 2013-09-23 20:42:29

git stash pop aplica o elemento de topo escondido e remove-o da pilha. git stash apply faz o mesmo, mas deixa-o no Stack.

 40
Author: jchapa, 2013-03-08 03:16:25
Vê-lo em acção pode ajudar-te a compreender melhor a diferença.

Assumindo que estamos a trabalhar no ramo master e que temos um ficheiro hello.txt que contém" Hello " string.

Vamos modificar o ficheiro e adicionar "mundo" ao texto. Agora quer mudar-se para um ramo diferente para corrigir um erro menor que acabou de encontrar, por isso precisa de stash as suas alterações:
git stash
Mudaste-te para o outro ramo, corrigiste o erro e agora estás pronto para continuar a trabalhar no teu ... branch, então você pop as mudanças:
git stash pop
Agora, se tentar rever o conteúdo do stash, vai ter:
$ git stash show -p
No stash found.

No entanto, se usares git stash apply em vez disso, terás o conteúdo escondido, mas também o manterá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

Então {[8] } é como o pop de stack-ele realmente remove o elemento uma vez que ele é estourado, enquanto apply é mais como peek .

 18
Author: Maroun, 2016-11-30 12:27:06