Comandos do Git

git stash

git stash: salvar temporariamente as alterações do seu diretório de trabalho para usar depois, devolvendo o diretório de trabalho a um estado limpo (o estado do último commit).

Quando você executa o git stash, o Git pega as edições que você fez em arquivos rastreados (e qualquer alteração que você adicionou ao stage) e guarda tudo em um armazenamento temporário chamado stash. Seus arquivos de trabalho são então restaurados para como estavam no último commit.

Isso é útil quando você precisa pausar o que está fazendo — talvez para trocar de branch, puxar novas atualizações ou testar algo arriscado — sem perder o progresso. Por padrão, o Git não mexe nos arquivos não rastreados, mas você pode optar por incluí-los.

O stash funciona como uma pilha de cartas. Você pode colocar alterações novas no topo da pilha e tirá-las de lá quando precisar delas de novo. Na maioria dos casos, você vai usar git stash (que é o mesmo que git stash push) para criar um stash novo e, mais tarde, git stash pop para reaplicá-lo, o que também o remove da lista de stashes.

Cada stash ganha um identificador como stash@{0}, onde 0 é a entrada mais recente. Você pode listar, aplicar, inspecionar, remover ou limpar stashes a qualquer momento.

Exemplos

Salve temporariamente as alterações atuais e limpe o diretório de trabalho:

git stash

O mesmo que:

git stash push

Aplique o stash mais recente e tire-o da lista de stashes:

git stash pop

Adicione uma mensagem descritiva ao stash para identificá-lo mais facilmente depois:

git stash push -m "WIP: responsive header"

Inclua arquivos não rastreados no stash:

git stash push -u

Revise o que você guardou no stash e inspecione o diff de uma entrada específica:

git stash list
git stash show -p stash@{0}

Reaplique um stash sem apagá-lo, restaurando tanto as alterações do diretório de trabalho quanto as do stage:

git stash apply --index stash@{1}

Isso pode ser útil se você quiser aplicar o stash em várias branches ou mantê-lo para uso futuro.

Remova uma entrada específica do stash:

git stash drop stash@{0}

Limpe todos os stashes quando não precisar mais deles:

git stash clear