Objetivo: Aprender a usar o Git Stash para salvar temporariamente alterações não commitadas, permitindo mudar de branch ou realizar outras operações sem perder trabalho em andamento.
O comando git stash
salva temporariamente suas modificações rastreadas e não commitadas, assim como arquivos rastreados que estejam em staging, permitindo que você limpe seu diretório de trabalho e possa mudar de contexto sem comprometer as alterações em andamento.
É como um "bolso mágico" onde você guarda seu trabalho em andamento para recuperá-lo mais tarde.
# Stash básico (salva alterações rastreadas)
git stash
# Stash com mensagem personalizada
git stash save "Implementação parcial do login"
# Incluir arquivos não rastreados (untracked)
git stash --include-untracked
# ou
git stash -u
# Incluir TODOS os arquivos (até os ignorados)
git stash --all
# Listar todos os stashes
git stash list
# Saída exemplo:
# stash@{0}: On feature/login: Implementação parcial do login
# stash@{1}: On develop: Correções de estilo
# Ver o resumo do stash mais recente
git stash show
# Ver detalhes das alterações no stash mais recente
git stash show -p
# Ver detalhes de um stash específico
git stash show -p stash@{1}
# Aplicar o stash mais recente (mantém ele na lista)
git stash apply
# Aplicar o stash mais recente e removê-lo da lista
git stash pop
# Aplicar um stash específico
git stash apply stash@{2}
# Aplicar um stash específico e removê-lo
git stash pop stash@{2}
# Remover o stash mais recente
git stash drop
# Remover um stash específico
git stash drop stash@{1}
# Remover todos os stashes
git stash clear
Se você perceber que as alterações no stash deveriam estar em uma branch separada:
git stash branch nova-feature stash@{0}
Isso cria uma nova branch a partir do commit onde o stash foi criado, aplica o stash e o remove da lista se tudo der certo.
Para salvar apenas algumas alterações e não todas:
# Modo interativo para escolher o que stashear
git stash --patch
# ou
git stash -p
# Stashear apenas arquivos específicos
git stash -- arquivo1.js arquivo2.css
# Você está trabalhando na feature/login
# Surge uma correção urgente para fazer
# 1. Salve seu trabalho atual
git stash save "Trabalho em andamento no login"
# 2. Volte para a branch principal
git checkout main
# 3. Crie uma branch para o hotfix
git checkout -b hotfix/bug-123
# 4. Faça as correções necessárias e commit
# ... (trabalhe no hotfix)
git commit -m "Corrige bug crítico #123"
# 5. Merge do hotfix
git checkout main
git merge hotfix/bug-123
# 6. Volte ao seu trabalho anterior
git checkout feature/login
git stash pop
# Você fez alterações na branch errada
# 1. Salve as alterações
git stash
# 2. Mude para a branch correta
git checkout feature/correta
# 3. Aplique as alterações
git stash pop
Quando há conflitos ao aplicar um stash:
git add
git stash pop
e houve conflitos, o stash não é automaticamente removidogit stash drop
Objetivo: Praticar o uso do stash em um cenário de trabalho
← Voltar para página principal