Estou usando git stash pop
há algum tempo. Eu descobri recentemente sobre o git stash apply
comando. Quando eu tentei, parecia funcionar da mesma forma git stash pop
.
Qual é a diferença entre git stash pop
e git stash apply
?
Estou usando git stash pop
há algum tempo. Eu descobri recentemente sobre o git stash apply
comando. Quando eu tentei, parecia funcionar da mesma forma git stash pop
.
Qual é a diferença entre git stash pop
e git stash apply
?
Respostas:
git stash pop
joga fora o stash (mais alto, por padrão) depois de aplicá-lo, enquanto o git stash apply
deixa na lista de stash para possível reutilização posterior (ou você pode git stash drop
fazê - lo).
Isso acontece, a menos que haja conflitos depois git stash pop
; nesse caso, ele não removerá o esconderijo, deixando-o se comportar exatamente como git stash apply
.
Outra maneira de olhar para isso: git stash pop
é git stash apply && git stash drop
.
git stash pop
do resultado, você ainda receberá um erro de conflito.
Consegui este link útil que indica a diferença, como John Zwinck afirmou e uma desvantagem de git stash pop
.
Por exemplo, digamos que suas alterações ocultas entrem em conflito com outras alterações que você fez desde que você o criou pela primeira vez. Tanto o pop quanto o Apply ativam o modo de resolução de conflitos de mesclagem, permitindo que você resolva bem esses conflitos ... e nenhum deles se livra do estoque, mesmo que você também esteja esperando pop. Como muitas pessoas esperam que os stashes sejam apenas uma pilha simples, isso geralmente os leva a colocar o mesmo stash acidentalmente mais tarde, porque pensavam que ele havia acabado.
Link: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
Vê-lo em ação pode ajudá-lo a entender melhor a diferença.
Supondo que estamos trabalhando na master
ramificação e tenha um arquivo hello.txt
que contenha a string "Hello".
Vamos modificar o arquivo e adicionar a string "world" a ele. Agora você deseja mudar para uma ramificação diferente para corrigir um bug menor que acabou de encontrar, portanto, é necessário fazer stash
as alterações:
git stash
Você mudou para a outra ramificação, corrigiu o erro e agora está pronto para continuar trabalhando em sua master
ramificação, para que você faça pop
as alterações:
git stash pop
Agora, se você tentar revisar o conteúdo oculto, receberá:
$ git stash show -p
No stash found.
No entanto, se você usar git stash apply
, obterá o conteúdo oculto, mas também o manterá:
$ 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
Assim pop
é como o pop da pilha - na verdade, ele remove o elemento depois que ele é disparado, enquanto apply
é mais como uma espiada .
In git
stash é uma área de armazenamento onde os arquivos alterados atuais podem ser movidos.
stash
A área é útil quando você deseja obter algumas alterações do git
repositório e detectou algumas alterações em alguns arquivos mútuos disponíveis no repositório git
.
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
aplique apenas as alterações da área de esconderijo enquantogit pop
aplica e remova as alterações dastash
área.
Git Stash Pop vs apply
Working
Se você deseja aplicar as principais alterações armazenadas em cache à alteração não faseada atual e excluí-lo também, você deve procurar git stash pop
.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Mas se você deseja aplicar as principais alterações armazenadas em cache às alterações não-estaduais atuais sem excluí-la, deve optar por isso git stash apply
.
Nota: Você pode relacionar esse caso com
Stack
classepop()
epeek()
métodos, onde pop altera o topo por decrementos (top = top-1), maspeek()
é capaz de obter apenas o elemento top.