Como você fez o push, sua opção menos provável de quebrar provavelmente é git revert
:
git checkout master
git revert commit1 commit2
git merge new-branch
git push
Observe que isso resultará no fato de o master ter exatamente os mesmos arquivos que o new-branch, mas commit1 e commit2 ainda estarão no histórico do master, junto com dois commits adicionais revertendo suas alterações.
NÃO RECOMENDADO
Se você realmente quiser realmente remover os commits que você já enviou do master, primeiro, notifique todos os seus colegas de equipe que provavelmente você estará quebrando as coisas, então use git reset
:
git checkout master
git reset --hard commit3
git merge new-branch
git push -f
--hard
removerá todas as alterações feitas por commit1 e commit2 do seu sistema de arquivos. Você pode usar --soft
para preservar essas mudanças no sistema de arquivos, enquanto ainda remove essas confirmações.
Você pode apontar seus colegas de equipe para a documentação de recuperação de um rebase de envio de dados (git reset aponta para essa seção ao falar sobre o uso de reset --hard
em commits já enviados).