Pular para o conteúdo
~/.primo-academy.sh
☰ Aulas · Git · 0/23
Recomendado: essencial

Desfazendo Coisas: restore, reset e revert

1 min de leitura

fonte

Errar faz parte. O Git tem uma ferramenta certa para cada tipo de "ops" - e escolher a errada é o que assusta iniciante. Vamos separar por onde está o erro.

Mexi no arquivo e quero voltar ao último commit (descartar a edição):

git restore arquivo.txt        # cuidado: perde as mudanças não comitadas

Fiz git add sem querer e quero tirar do staging (sem perder a edição):

git restore --staged arquivo.txt

A mensagem do último commit saiu errada ou esqueci um arquivo nele:

git commit --amend -m "Mensagem corrigida"

Quero desfazer um commit que já foi enviado para outras pessoas. Aqui não se reescreve história - cria-se um commit novo que anula o anterior:

git revert a1b2c3d       # gera um commit que desfaz as mudanças de a1b2c3d

Já o git reset move a branch para trás, mexendo no histórico local. É poderoso e perigoso: use só em commits que ainda não compartilhou.

git reset --soft HEAD~1    # desfaz o commit, mantém as mudanças no staging
git reset --hard HEAD~1    # desfaz o commit E descarta as mudanças (irreversível-ish)
  • restore volta arquivos; reset move a branch; revert cria um commit que anula outro.
  • Já compartilhou o commit? Use revert. reset reescreve história e bagunça quem já baixou.
  • --amend conserta o último commit (mensagem ou conteúdo).
  • reset --hard descarta trabalho de verdade. Respire antes de rodar.

Dica: quase nada some "para sempre" no Git - até um reset --hard costuma ser recuperável pelo reflog (nó avançado). Mas trabalho que você nunca comitou não tem essa rede. Comite cedo, comite com frequência.

Com o básico dominado - criar, comitar, olhar, desfazer - subimos de nível: as branches, o recurso que faz do Git o que ele é.

// recursos

// avaliação da trilha

ainda sem avaliações