Guia Completo do Git Stash: Gerenciamento Eficiente de Alterações Temporárias

O que é o Git Stash e por que utilizá-lo?

O git stash atua como uma área de armazenamento temporário (um "limbo" controlado) para modificações que ainda não estão prontas para um commit. Imagine que você está no meio de uma refatoração complexa e surge a necessidade urgente de corrigir um bug em outra branch. Em vez de criar um commit "sujo" com código incompleto, você "guarda" suas alterações no stash, limpa seu diretório de trabalho e, após resolver a urgência, recupera o que estava fazendo. As principais situações de uso incluem: - Troca de contexto: Mudar de branch sem perder o progresso atual.

  • Limpeza para Pull: Evitar conflitos ao baixar atualizações do repositório remoto quando você tem arquivos modificados localmente.
  • Experimentação: Testar uma ideia rapidamente; se não funcionar, basta descartar o stash ou reverter para o estado anterior.

Comandos Essenciais: Fluxo de Trabalho com Stash

1. Salvando alterações

O comando mais simples guarda as alterações rastreadas (tracked): ``` git stash


Contudo, como boa prática de engenharia, recomenda-se sempre adicionar uma descrição para identificar a alteração posteriormente: ```
git stash push -m "Implementação parcial do processamento de pagamentos"

Para incluir arquivos novos que ainda não foram adicionados ao controle de versão (untracked files), utilize a flag -u: ``` git stash -u -m "Início da lógica de autenticação e novos controllers"


#### 2. Listando e inspecionando o histórico

O Git mantém uma pilha (stack) de stashes. Para visualizar todos os itens armazenados: ```
git stash list

A saída será semelhante a: ``` stash@{0}: On develop: Implementação parcial do processamento de pagamentos stash@{1}: On master: Hotfix temporário na index


Para verificar o que foi alterado especificamente em um stash sem aplicá-lo: ```
# Resumo dos arquivos alterados
git stash show stash@{0}

# Visualizar o diff detalhado (linhas alteradas)
git stash show -p stash@{0}

3. Recuperando o código

Existem duas formas principais de trazer as alterações de volta para o diretório de trabalho: **Opção A: Pop (Aplicar e remover)**Ideal quando você quer apenas continuar o trabalho e não precisa manter a cópia na pilha. ``` git stash pop


**Opção B: Apply (Aplicar e manter)**Útil se você deseja aplicar as mesmas alterações em múltiplas branches. ```
git stash apply stash@{1}
Comando Ação no Código Estado da Pilha
pop Restaura modificações Remove o registro da lista
apply Restaura modificações Mantém o registro na lista

4. Criando uma branch a partir de um Stash

Se o seu código guardado ficou muito defasado em relação à branch atual e aplicar o stash causa muitos conflitos, você pode criar uma nova branch baseada no commit onde o stash foi gerado: ``` git stash branch feature-recuperada stash@{0}


Este comando cria a branch, aplica as alterações e remove o stash da lista automaticamente. ---

### Resolução de Conflitos no Stash

Conflitos ocorrem quando o `git stash pop` tenta modificar uma linha que já foi alterada na branch atual desde que o stash foi criado. 1. O Git interromperá o processo e marcará os arquivos em conflito.
2. Abra os arquivos, resolva as marcações `<<<<<<<` e `=======` manualmente.
3. Adicione o arquivo resolvido: `git add nome_do_arquivo.js`.
4. **Importante:** Em caso de conflito, o Git não remove o stash automaticamente da lista (mesmo usando `pop`). Após resolver, delete-o manualmente com: `git stash drop stash@{0}`.

---

### Operações Avançadas e Limpeza

Se você acumulou muitos itens e deseja limpar sua área de trabalho: **Remover um item específico:**```
git stash drop stash@{2}

Limpar todo o histórico de stashes:``` git stash clear


**Stash parcial:**Se você deseja guardar apenas alguns arquivos específicos e manter outros no diretório de trabalho: ```
git stash push path/to/file1.txt path/to/file2.js -m "Apenas arquivos de config"

**Incluindo arquivos ignorados:**Para guardar inclusive arquivos que estão no .gitignore (como binários ou envs locais): ``` git stash push --all


---

### Dicas de Boas Práticas

- **Sempre use mensagens:** Um `stash list` cheio de "WIP on branch..." é inútil após alguns dias.
- **Não use Stash como backup de longo prazo:** O stash é volátil e local. Se o código é importante e precisa ser compartilhado ou guardado por semanas, prefira uma branch temporária ou um commit de rascunho (WIP).
- **Verifique antes de limpar:** Antes de um `git stash clear`, sempre execute `git stash list` para garantir que não há nada vital esquecido.

Tags: Git version-control devops Workflow git-stash

Publicado em 7-21 05:17