Menu
Coddy logo textTech

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.

git reset --hard move o HEAD para trás e descarta tudo o que vem depois - incluindo a área de preparação e a árvore de trabalho.

Sintaxe

CommandWhat it does
git reset --hardDescarta todas as alterações não commitadas (permanece em HEAD)
git reset --hard HEAD~1Remove 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/mainFaz 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.

StepCommandResult
1git reflogLista por onde o HEAD passou, com os hashes
2git reset --hard <hash>Volta para o commit anterior ao reset

Perguntas frequentes sobre git reset --hard

O que o git reset --hard realmente faz?
Ele move seu branch atual para o commit alvo e sobrescreve tanto a área de staging quanto sua árvore de trabalho para corresponderem a ele. Quaisquer alterações não commitadas - em staging ou não - são descartadas. Comparado com --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?
Execute 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?
Execute 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?
Trabalho commitado geralmente sim: execute 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?
Sim. Abra o terminal playground para executar 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.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR