Remover um commit que não foi enviado por git push
Neste artigo você vai aprender a como remover um commit que não foi enviado por git push, ou seja, que ainda não está no repositório remoto
Para remover um commit que ainda não foi enviado com git push, rode git reset HEAD~1 no seu repositório local. Esse comando desfaz o último commit e, no modo padrão (–mixed), mantém as alterações no diretório de trabalho, então você não perde o código. O HEAD~1 significa ‘um commit atrás’ do ponto atual. Se quiser voltar o código todo pro estado da origem, use git reset –hard origin/main (ou origin/master, dependendo do nome do branch), lembrando que o –hard descarta as alterações locais

Fala programador(a), beleza? Bora aprender mais sobre commit e git!
Basicamente podemos reverter todo o código que já realizamos
O commit é como se fosse um save point para nós, ou seja, todos eles ficam guardados no nosso branch
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 118 aulas
- 4 projetos
- 9h 33min
Fazendo com que seja possível retornar a estes pontos em específico, desfazendo o código
Apenas precisamos que o mesmo não tenha sido enviado ainda, o envio ocorre após o comando git push
Então o código estará no repositório remoto e o nosso local não tem mais tanto controle sobre ele
Então qual comando devemos utilizar? Simples:
git reset HEAD~1
Isso faz com que o código retorne para o penúltimo commit
Traduzindo o comando temos HEAD que representa o ponto atual que estamos
E ~1 que representa quantos commits queremos retornar, ou seja, escolhemos apenas desfazer um commit
Você também pode querer reverter todos os commits, ou seja, ter o código igual o da origem
O comando para isso é:
git reset --hard origin/master
Note que todos estes comandos podem fazer você perder código, então revise bem o que está fazendo
Quer aprender mais sobre git? Veja este curso gratuito:
Conclusão
Neste artigo você aprendeu a como remover um commit que não foi enviado em git
Tome cuidado que todos os comandos de reset ou revert podem fazer você perder código!
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias. O link acima contém um cupom de desconto para os cursos!
Uma seção nova explicando os três modos do reset, mais ou menos assim: ‘Antes de sair resetando, entende os três modos do git reset, porque cada um trata o teu código de um jeito. O –soft desfaz o commit e mantém as alterações no stage, prontas pra commitar de novo. O –mixed é o padrão (é ele que roda no git reset HEAD~1 quando você não passa flag nenhuma): tira do stage mas mantém as alterações no diretório de trabalho. Já o –hard descarta tudo, stage e diretório, e aí sim o código vai embora. Regra de ouro: se você não quer perder nada, fica no –soft ou no –mixed, o –hard é o único que apaga de verdade.’
Uma observação logo depois do comando: ‘Repara no master aqui. Muitos repositórios hoje usam main no lugar de master, o GitHub e o GitLab adotam main como padrão desde 2020. O próprio Git ainda cria master quando você não configura o init.defaultBranch, então confere o nome do branch da tua origem: se for main, o comando vira git reset –hard origin/main.’
‘Calma, na maioria das vezes dá pra recuperar. O Git guarda um histórico de todo lugar pra onde o HEAD apontou, e você vê isso com git reflog. Rode ele, ache o hash do commit de antes do reset e volte pra esse hash. É a rede de segurança que salva a pele quando o –hard leva junto código que você ainda queria.’
Não tem teste de primeira mão de git reset registrado pra ancorar esse post, então não vou fingir bastidor que não rolou. O que vale muito a pena testar num repositório de brincadeira antes de confiar no comando pra valer: rodar git reset –hard, ver o código sumir, e recuperar pelo git reflog. Fazendo isso uma vez você perde o medo do –hard, porque já sabe que dá pra voltar
Perguntas frequentes
O git reset HEAD~1 apaga o meu código?
Não. No modo padrão (–mixed) ele desfaz o commit mas preserva as alterações no diretório de trabalho, só tira do stage. Você reescreve o commit sem perder nada
Qual a diferença entre git reset –soft, –mixed e –hard?
O –soft desfaz o commit e mantém as alterações no stage. O –mixed (padrão) tira do stage mas mantém as alterações no diretório de trabalho. O –hard descarta tudo, stage e diretório. Só o –hard faz você perder código de verdade
É git reset –hard origin/master ou origin/main?
Depende do repositório. O próprio Git ainda usa master como padrão quando o init.defaultBranch não está configurado, mas o GitHub e o GitLab usam main desde 2020. Confere o nome do branch da tua origem e troca master por main se for o caso
Como recuperar depois de um git reset –hard sem querer?
Use git reflog. Ele registra os commits pra onde o HEAD apontou, então você acha o hash anterior ao reset e volta pra ele. É a rede de segurança pro –hard
Como desfazer o último commit sem perder as alterações?
Rode git reset HEAD~1 sem flag. Ele volta o HEAD um commit e deixa as tuas mudanças no diretório de trabalho pra você commitar de novo
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares

Como saber em qual branch estou no Git? (2 comandos simples)
Neste artigo você vai aprender a como verificar o branch atual em git, ou seja, o branch em que você está trabalhando no momento Fala […]

Como remover remote origin de repositório em git
Neste artigo você vai aprender a como remover remote origin de repositório em git, com apenas um comando! Fala programador(a), beleza? Bora aprender mais sobre […]
O que é GIT e GitHub? Para que serve, diferenças e cursos
Seja bem-vindo ao nosso guia completo sobre uma das ferramentas mais cruciais e universalmente utilizadas no mundo da tecnologia da informação: o Git e Github. […]
