0 XP

DEVOPSQUEST

Minha Trilha
Módulo 3 · Git, GitHub e Bash

Recuperação de desastres no Git: reflog, stash, reset e restore

Intermediário 30 min+25 XPGit

Objetivos desta aula

  • Usar git stash para guardar trabalho em andamento
  • Desfazer alterações com restore e reset
  • Recuperar commits “perdidos” com reflog
  • Escolher a ferramenta certa para cada situação

Todo mundo já pensou “estragou tudo” no Git. A boa notícia: quase nada se perde de verdade. Esta aula é o seu kit de primeiros socorros.

git stash guarda temporariamente o que você está fazendo: precisa trocar de branch mas não quer commitar ainda? git stash limpa a mesa; git stash pop devolve as alterações depois.

git restore desfaz alterações não commitadas: git restore arquivo descarta mudanças no arquivo (volta ao último commit); git restore --staged arquivo tira do stage sem perder o conteúdo.

git reset move o ponteiro da branch: --soft mantém tudo no stage, --mixed (padrão) mantém os arquivos mas tira do stage, --hard descarta tudo — use com muito cuidado.

git revert é o jeito seguro de desfazer um commit já publicado: cria um commit novo que desfaz o anterior, sem reescrever o histórico. Em branches compartilhadas, prefira revert a reset.

git reflog é o salva-vidas: registra para onde o HEAD apontou nos últimos tempos, inclusive commits “perdidos” por reset ou branch apagada. Ache o hash e faça git checkout -b resgate <hash>.

Resumo de emergência: alteração não commitada → restore; commit local errado → reset; commit já enviado → revert; perdi tudo → reflog.

Regra de ouro: nunca reescreva histórico já publicado (push force em branch compartilhada) sem combinar com o time.

Na prática

Kit de primeiros socorros

bash

git stash && git stash pop          # guarda e devolve
git restore src/app.ts              # descarta mudanças locais
git restore --staged src/app.ts     # tira do stage
git reset --soft HEAD~1             # desfaz o último commit, mantém stage
git revert HEAD                     # desfaz o último commit com commit novo
git reflog                          # histórico de onde o HEAD esteve
git checkout -b resgate a1b2c3d     # recupera commit “perdido”

Por que isso importa

Saber se recuperar de erros no Git dá confiança para experimentar — e evita pânico em sexta-feira à tarde.

Erro comum

Usar git reset --hard por hábito e descartar horas de trabalho não commitado.

Dica de produção

Antes de qualquer operação destrutiva, crie uma branch de backup: git branch backup/antes-do-reset.

Pergunta de entrevista

Qual a diferença entre git revert e git reset? Quando usar cada um?

Glossário

stash
Prateleira temporária para alterações não commitadas.
reflog
Registro local de todos os lugares por onde o HEAD passou.
revert
Commit novo que desfaz um commit anterior.
reset --hard
Descarta commits e alterações locais (destrutivo).

Conexão com o CloudShop

Um deploy errado no CloudShop é revertido com git revert e o histórico fica limpo para auditoria.

Quiz da aula

  1. 1. Para desfazer um commit já enviado ao time, use:

  2. 2. Apagou uma branch com commits importantes. O que te salva?

  3. 3. O que `git stash` faz?

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima