Como usar
- Escolha a operação na lista.
- Preencha os parâmetros (branch, commit, mensagem).
- Leia a explicação e os alertas de risco.
- Copie os comandos e execute no terminal.
Casos de uso
- Desfazer um commit feito na branch errada.
- Limpar o histórico antes de abrir um pull request.
- Renomear branches locais e remotas sem esquecer nenhum passo.
- Remover do repositório um arquivo que deveria estar no .gitignore.
Conceitos técnicos
reset --soft, --mixed e --hard
Os três movem o HEAD. --soft mantém as alterações no stage, --mixed (padrão) as mantém no working tree fora do stage e --hard descarta tudo. Commits descartados ainda podem ser recuperados pelo git reflog por algum tempo.
Reescrever histórico
amend, reset e rebase criam novos commits com novos hashes. Em branches já publicadas, isso exige push forçado e quebra o histórico de quem já baixou. Prefira git revert em branches compartilhadas e --force-with-lease em vez de --force.
switch e restore
Desde o Git 2.23, git switch troca de branch e git restore restaura arquivos, separando as responsabilidades do antigo git checkout e reduzindo erros.
Perguntas frequentes
Como recuperar um commit perdido após reset --hard?
Execute git reflog, encontre o hash anterior ao reset e use git reset --hard <hash> ou crie uma branch a partir dele.
Qual a diferença entre --force e --force-with-lease?
--force sobrescreve o remoto incondicionalmente. --force-with-lease recusa o push se alguém enviou commits que você ainda não tem localmente.