2
respostas

Dúvida sobre Git e Github

Tenho um repositório no Github com 4 commits, como faço pra ele voltar no tempo e ir para o estado como estava o commit 2 e descartar os commits posteriores? Quero mandar um commit do meu repositório local para o Github. Se eu der um pull para puxar os commits do Github para o meu repositório local e depois usar o comando "git reset --hard (hash do commit)" para voltar para o commit 2, vou perder os arquivos que eu tenho no meu repositório local e não vou poder mandar o commit que eu queria, pois os arquivos somem. Como resolvo isso?

Eu pensei em fazer o seguinte: criar um segundo repositório local só para fazer o pull e depois voltar para o commit 2 com "git reset --hard (hash do commit)" e daí fazer um push com o parâmetro "--force" para forçar esse push, fazendo com que o repositório Github volte para o commit 2. Depois eu excluo esse repositório local e volto para o outro repositório local para poder fazer primeiro o pull e depois o push mandando o commit que eu quero para o Github.

Tem algum jeito mais fácil de resolver isso?

2 respostas

Usei o comando "git pull origin main --allow-unrelated-histories" daí percebi que o git cria um commit automático chamado "Merge branch 'main' of "nomeProjeto"", tem como remover esse commit automático do histórico do Github?

Oi, Luidi! Tudo joia?

Para voltar ao estado do commit 2 e remover os commits posteriores sem perder os arquivos locais, siga esses passos. Isso permitirá que você faça o push das mudanças para o GitHub com segurança.

  1. Primeiro, faça o reset para o commit 2 de forma segura, sem perder os arquivos:

    git reset --soft (hash do commit 2)
    

    Esse comando mantém as alterações dos commits posteriores em staging, permitindo que você as revise ou as envie de volta mais tarde.

  2. Depois, execute um commit com as mudanças atuais (caso necessário):

    git commit -m "Voltando ao estado do commit 2"
    
  3. Agora, você pode forçar o push do repositório para sincronizá-lo com o GitHub:

    git push origin main --force
    

Esse processo ajusta o repositório remoto para o estado do commit 2, sem precisar criar um segundo repositório local.

Para remover o commit automático de merge que mencionou, siga o mesmo procedimento de reset para o commit anterior ao merge e faça um push com --force para atualizar o GitHub.

Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.