Substituir mestre por ramificação

0

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

Aqui estão algumas explicações sobre a situação:

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

No ponto de commit3 , fiz alterações e criei uma nova ramificação para empurrá-las.

Agora, gostaria de tornar a versão de filial a principal, removendo commit2 e commit1 .

    
por yerzhik 25.08.2017 / 19:54

1 resposta

1

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).

    
por 25.08.2017 / 20:39

Tags