[GIT] Stash - Aula 15
Stash
Use Stash
quando você quiser salvar o estado atual do diretório de trabalho e do índice, mas deseja voltar para um diretório de trabalho limpo. O comando armazena suas modificações locais e reverte o diretório de trabalho para coincidir com o commit HEAD.
Comandos
git stash
Salva as mudanças atuais.
git stash -m "mensagem"
Salva as mudanças atuais com uma mensagem.
git stash list
Lista todas as alterações com o respectivo índice.
git stash apply
Aplica a alteração mais recente do Stash sem removê-la da lista.
git stash pop
Aplica a alteração mais recente e a remove do Stash.
git stash drop stash@{n}
Remove uma entrada específica do Stash.
n = Índice do Stash
Obs: O Stash funciona como uma estrutura de pilha, também conhecido como LIFO (Last In, First Out), ou seja, o último a entrar é o primeiro a sair.
O que efetivamente o Stash salva?
O Stash irá salvar as mudanças:
- Tracked
- Staged
O Stash não irá salvar (padrão):
- Untracked
- Ignored (.gitignore)
Para salvar os arquivos Untracked:
git stash -u
Para salvar os arquivos Ignored:
git stash --all
Exemplo
Você está desenvolvendo uma nova funcionalidade na Branch funcionalidade-A
, mas de repente o seu líder de equipe pede para você resolver um bug urgente na Branch main. O problema é que seu código atual está incompleto e você não quer fazer um Commit dessas alterações ainda.
Usaremos o Stash para salvar as alterações de maneira temporária, para que possamos resolver o bug da main e depois continuar a implementação da funcionalidade-A
.
Iniciamos salvando as mudanças:
git stash
Mudamos para main:
git switch main
Corrigimos o bug da main e retornamos para funcionalidade-A
.
git switch funcionalidade-A
Vamos recuperar nossas implementações para continuar trabalhando na funcionalidade-A
:
git stash apply
ou
Se tudo estiver certo e você não quiser manter o Stash salvo:
git stash drop
Geralmente usamos o Drop mesmo.
Obs: Use o Stash para salvar alterações temporárias e que você pretende retornar rapidamente, não tente fazer Stash para alterações duradouras, para elas devemos usar o Commit.