Você pode saber criar seus stashes, listar eles e tudo mais, mas na hora de voltar a usar o trabalho salvo em um stash sempre rola aquela dúvida: “apply ou pop? Eis a questão”. E essa dúvida é muito normal já que ambos tem um funcionamento parecido, ambos aplicam as mudanças guardadas em um stash.

Nessa colinha você vai ver quando usar um e quando usar o outro. 😉

O git stash apply

O apply aplica as mudanças de um stash no seu diretório de trabalho e mantém a entrada na lista de stashes. Por exemplo, considere que você tem a seguinte pilha de stashes:

imagem mostrando a lista de stashes como resultado do comando git stash list com dois stashes na lista

E você quer aplicar as mudanças do primeiro stash o stash@{0}. Para isso, rode o comando:

git stash apply

O resultado esperado é encontrar as mudanças guardadas naquele stash no seu branch local:

imagem mostrando o resultado do comando git stash apply com as mudanças presentes

E também encontrar aquelas mudanças ao listar os stashes:

imagem mostrando a lista de stashes como resultado do comando git stash list com dois stashes na lista

Note que o apply assim como o drop e o pop sem passar um índice irá usar a stash mais recente da pilha.

O git stash pop

O pop por sua vez, vai aplicar as mudanças de um stash à sua área de trabalho e remover aquele stash da pilha em seguida. O pop nada mais é do que um atalho para git stash apply seguido de git stash drop.

Por exemplo, levando em consideração a mesma lista de stashes anterior, e um ambiente de trabalho sem mudanças, você quer tirar da lista e aplicar as mudanças do primeiro stash o stash@{0}. Então você roda o comando:

git stash pop

O resultado esperado é encontrar as mudanças guardadas naquele stash no seu branch local, assim como no apply:

imagem mostrando o resultado do comando git stash pop com as mudanças presentes

E, diferentemente do apply, ele já mostra que o stash correspondente foi removido da lista na mensagem de resultado. Se você rodar o git stash list não vai encontrar mais aquele stash na lista:

imagem mostrando a lista de stashes só com um stash como resultado de ter feito o pop do stash mais recente

Quando usar apply e quando usar pop

Digamos que você queira reaproveitar as mudanças que você fez em outro lugar também, ou não tem certeza se você quer usar elas agora, então você pode usar a apply e caso não queira continuar com elas, usar o git reset HEAD para descartá-las, assim mantendo as mudanças armazenadas num stash para mais tarde.

Caso você tenha certeza que quer aplicar as mudanças use pop, assim além de aplicar as mudanças você mantém a lista de stash limpinha. Via de regra, eu prefiro sempre usar o pop e refazer o stash caso eu precise guardar as mudanças para mais tarde.

O importante é que agora você entende a diferença entre um e outro e não precisa mais ter medo do git stash.

GitFichas