Introdução
Básico
Branches
Merge/Rebase
Avançado
GitHub
CI/CD

Git Stash: Salvando Alterações Temporárias

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 que é Git Stash?

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.

Quando usar o Git Stash

Comandos Básicos do Stash

Salvando alterações no stash

# 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

Listando stashes salvos

# 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

Inspecionando o conteúdo de um stash

# 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}

Recuperando alterações do stash

# 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}

Removendo stashes

# 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

Casos de Uso Avançados

Criando uma branch a partir de um stash

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.

Stash parcial

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

Fluxos de Trabalho com Stash

Cenário 1: Interrupção do trabalho

# 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

Cenário 2: Transferir alterações entre branches

# 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

Resolução de Conflitos ao Aplicar Stash

Quando há conflitos ao aplicar um stash:

  1. Git indica os arquivos com conflito
  2. Resolva os conflitos manualmente, como faria em um merge
  3. Adicione os arquivos resolvidos com git add
  4. Se usou git stash pop e houve conflitos, o stash não é automaticamente removido
  5. Você precisará removê-lo manualmente após resolver os conflitos: git stash drop

Exercícios Práticos

Exercício: Workflow com Stash

Objetivo: Praticar o uso do stash em um cenário de trabalho

  1. Na sua branch de feature, faça algumas alterações em um arquivo
  2. Use stash para salvar essas alterações com uma mensagem descritiva
  3. Mude para a branch main e crie um arquivo novo
  4. Volte para a branch de feature
  5. Recupere suas alterações do stash
  6. Verifique se todas as alterações foram aplicadas corretamente

Referências

← Voltar para página principal