NÃO RECOMENDADO

NÃO RECOMENDADO

Eu fiz vários commits. Então tive que voltar ao commit no meio. Fiz alterações lá e criei um novo branch. Agora o que eu quero fazer é pular (remover, excluir) todos os outros commits e usar branch como versão master. Mas não consigo descobrir como fazer isso.

Aqui está uma explicação da situação:

commit1 (latest)
commit2
commit3 (head pointing here)
other commits...

No ponto commit3, fiz alterações e criei um novo branch para enviá-las.

Agora eu gostaria de tornar a versão do branch a principal, removendo os commit2e commit1.

Responder1

Desde que você pressionou, sua opção com menor probabilidade de quebrar coisas é provavelmente git revert:

git checkout master
git revert commit1 commit2
git merge new-branch
git push

Observe que isso fará com que o master tenha exatamente os mesmos arquivos do 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 deseja remover commits que você já enviou do master, primeiro, notifique todos os seus colegas de equipe que você provavelmente quebrará coisas e, em seguida, use git reset:

git checkout master
git reset --hard commit3
git merge new-branch
git push -f

--hardremoverá todas as alterações feitas por commit1 e commit2 do seu sistema de arquivos. Você pode usar --softpara preservar essas alterações no sistema de arquivos, enquanto ainda remove esses commits.

Você pode indicar aos seus colegas de equipe a documentação pararecuperando de um rebase upstream(git reset aponta para essa seção ao falar sobre o uso reset --hardde commits já enviados).

informação relacionada