Imagine a seguinte situação: você está montando um quebra-cabeças enorme na mesa da sala de jantar. Metade dele já está pronto, mas as peças ainda estão soltas. De repente, chega visita e você precisa da mesa para servir o jantar.
Você não pode jogar as peças fora (perder o trabalho), mas também não faz sentido passar cola e enquadrar o quebra-cabeças do jeito que está, porque ele está incompleto (fazer um commit). O que você faz? Você "varre" as peças com cuidado para dentro de uma gaveta temporária, limpa a mesa, serve o jantar e, quando a visita for embora, tira as peças da gaveta e coloca na mesa exatamente como estavam antes.
No Git, essa gaveta mágica se chama Stash.
O Problema Real do Desenvolvedor
Você está no seu universo paralelo (nova-feature) escrevendo um código complexo. No meio do trabalho, seu chefe liga desesperado: "O site oficial está fora do ar! Um erro no index.php! Conserte agora na main!"
Você tenta mudar de branch digitando git checkout main, mas o Git bloqueia a viagem ou, pior, leva o seu código pela metade e quebrado para a branch principal. Você precisa de uma "mesa limpa" para trabalhar no erro, mas não quer fazer um commit de um código inacabado.
Exercício Prático: O Chamado de Emergência
Passo 1: Criando a bagunça
Garanta que você está em uma nova branch para testar:
git checkout -b teste-gavetaAbra o seu arquivo
veiculos.phpe comece a digitar um código novo, mas deixe ele intencionalmente pela metade:<?php // Código pela metade, com erro de sintaxe echo "Lista de veículos em manuNão faça o
git addnem ogit commit. Se você rodargit status, verá o arquivo modificado em vermelho.
Passo 2: A Emergência (Guardando na Gaveta)
O telefone tocou, você precisa ir para a main. Vamos limpar a mesa guardando tudo na gaveta temporária.
No terminal, digite:
git stash
(O Git vai dizer algo como: "Saved working directory and index state...").
A mágica: Olhe o seu arquivo
veiculos.phpno editor de código. Aquele código pela metade sumiu! O arquivo voltou a ser exatamente como era na última foto (commit). A sua "mesa" está limpa e segura.
Passo 3: Resolvendo o problema
Agora você pode viajar em paz:
git checkout mainTrabalhe normalmente. Altere o
index.php, conserte o bug, faça ogit add,git commitegit push. O fogo foi apagado!
Passo 4: Retomando o trabalho inacabado
O problema foi resolvido, então volte para o seu universo onde o trabalho foi interrompido:
git checkout teste-gavetaPara pegar as peças da gaveta e jogar de volta na mesa, use o comando:
git stash pop
(O termo "pop" significa "estourar" ou "pular para fora").
Ufa! Olhe o seu arquivo
veiculos.phpde novo. Aquele seu código que estava pela metade voltou para a tela, exatamente do jeito que você havia deixado, pronto para ser terminado.
Cheat Sheet da Gaveta (Comandos do Stash)
Se você for interrompido muitas vezes, pode acabar guardando várias coisas na gaveta. Aqui estão os comandos para gerenciar essa bagunça:
| Comando | O que ele faz |
|---|---|
git stash | Guarda todas as suas alterações não salvas (sem commit) na gaveta. |
git stash pop | Tira a alteração mais recente da gaveta e coloca de volta no seu código. |
git stash list | Mostra tudo o que está guardado na sua gaveta no momento. |
git stash clear | Joga a gaveta inteira no lixo. (Cuidado: as alterações serão perdidas para sempre!). |
→ Dica de Sobrevivência: O git stash é temporário. Não use ele como um substituto para o commit. Se você vai parar de trabalhar na funcionalidade hoje e só vai voltar nela na semana que vem, é melhor fazer um commit com a mensagem "WIP: Começa a fazer a lista de veículos" (WIP significa Work In Progress, ou Trabalho em Andamento). Use a gaveta apenas para interrupções rápidas!
