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

Remover um commit que não foi enviado capa

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
Formação Recomendada

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

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação SAAS com IA

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