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 Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
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 SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
