Git Reset --hard
Última atualização
git reset --hard move seu branch para um commit alvo e força tanto a área de staging quanto sua árvore de trabalho a corresponderem exatamente a ele - descartando no caminho toda alteração não commitada. É a forma mais destrutiva de git reset, então tenha certeza de que não precisa do seu trabalho atual antes de executá-lo.
Descartou um commit por engano? Um hard reset geralmente é recuperável via git reflog. Teste isso com segurança no terminal playground - um shell real no seu navegador.
Sintaxe
| Command | What it does |
|---|---|
git reset --hard | Descarta todas as alterações não commitadas (permanece em HEAD) |
git reset --hard HEAD~1 | Remove o último commit e suas alterações |
git reset --hard <hash> | Força o branch de volta a um commit específico |
git reset --hard origin/main | Faz o branch local corresponder exatamente ao remoto |
Recuperando um hard reset
O trabalho commitado que você descartou com o reset geralmente ainda pode ser recuperado.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Lista por onde o HEAD passou, com os hashes |
| 2 | git reset --hard <hash> | Volta para o commit anterior ao reset |
Perguntas frequentes sobre git reset --hard
O que o git reset --hard realmente faz?
--soft (que mantém as alterações em staging) e --mixed (que as mantém fora do staging), --hard é o único modo que joga as alterações fora.Como descarto todas as minhas alterações locais?
git reset --hard sem nenhum commit para redefinir a árvore de trabalho para o último commit, apagando as edições não commitadas. Para também limpar os arquivos não rastreados que o reset não toca, siga com git clean -fd.Como redefino meu branch para corresponder ao remoto?
git fetch e depois git reset --hard origin/main (troque pelo seu branch). Isso força seu branch local a corresponder exatamente ao remoto, descartando commits e alterações locais que divergem dele - útil quando seu branch local deu errado e você só quer a versão do remoto.Posso desfazer um git reset --hard?
git reflog para encontrar o commit para o qual seu branch apontava antes do reset e depois git reset --hard <hash> para retornar a ele. Alterações que nunca foram commitadas (apenas na sua árvore de trabalho) não podem ser recuperadas, então trate --hard com cuidado.Posso praticar isso online?
git reset --hard em um shell real no seu navegador - nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre a redefinição e a desfazer alterações passo a passo.