Estou usando git stash pophá algum tempo. Eu descobri recentemente sobre o git stash applycomando. Quando eu tentei, parecia funcionar da mesma forma git stash pop.
Qual é a diferença entre git stash pope git stash apply?
Estou usando git stash pophá algum tempo. Eu descobri recentemente sobre o git stash applycomando. Quando eu tentei, parecia funcionar da mesma forma git stash pop.
Qual é a diferença entre git stash pope 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 dropfazê - 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 popdo 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 masterramificação e tenha um arquivo hello.txtque 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 stashas alterações:
git stash
Você mudou para a outra ramificação, corrigiu o erro e agora está pronto para continuar trabalhando em sua masterramificação, para que você faça popas 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.
stashA área é útil quando você deseja obter algumas alterações do gitrepositó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 applyaplique apenas as alterações da área de esconderijo enquantogit popaplica e remova as alterações dastashárea.
Git Stash Pop vs applyWorking
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
Stackclassepop()epeek()métodos, onde pop altera o topo por decrementos (top = top-1), maspeek()é capaz de obter apenas o elemento top.