
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 commit2
e 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
--hard
removerá todas as alterações feitas por commit1 e commit2 do seu sistema de arquivos. Você pode usar --soft
para 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 --hard
de commits já enviados).