Git Stash
Salvar as alterações de uma branch, sem realizar o commit.
  • git
  • stash
  • git-workflow

Com o comand git stash é possível interromper um trabalho não finalizado em uma branch, sem a necessidade de realizar o commit, para retomá-lo posteriormente.

O cenário seria o seguinte:

Você está desenvolvendo em uma branch de trabalho, e no meio do processo, surge a necessidade de fazer o checkou em outra branch e realizar uma correção rápida ou algo semelhante. Seu trabalho atual não foi finalizado e ainda não é candidado a um commit.

Ao tentar mudar de branch sem, de fato fazer o commit das alterações, a master por exemplo, um erro semelhante poderá ocorrer:

git checkout master
error: Your local changes to the following files would be overwritten by checkout:
    ...
    some-files.some-extension
    ...
Please, commit your changes or stash them before you can switch branches.
Aborting

O Git não permite que você volte ao master porque você tem alterações na branch de trabalho, a solução para esse problema pode ser utilizar o stach.

Salve as alterações com o comando stash

git stash save "Alterações não finalizadas que serão retomadas"

Com o stash realizado, é possível acessar qualquer branch, ajustar o que for necessário, e após tudo finalizado, retomar o trabalho de onde parou. Para isso, acesse novamente a branch de trabalho e realize o unstash:

git stash pop

Tudo deve voltar como estava antes do stash.

Outras possibilidades são

Você criou uma pilha de stashs, ou seja, vários momentos em um branch de trabalho:

  • Listar todos os stashs salvos
git stash list
  • Unstash um específico
git stash pop "stash@{1}"
  • O git stash pop pode ser divido em dois momentos:

Aplicando o último stash:

git stash apply

Apagando o último stash

git stash drop

Para outras possibilidades e mais opções, consulte a documentação