GIT Substituir ramificação com mestre


33

Eu tenho um ramo de desenvolvimento antigo que está completamente desatualizado. Não quero removê-lo, mas quero substituir seu conteúdo inteiramente pelo ramo mestre. Significado, eu quero dev_branch = master

Eu tentei:

git merge -s ours dev_branch

Mas não funcionou ...

Respostas:


53

Se você deseja que todas as alterações sejam masterin dev_branch, então:

git checkout dev_branch
git reset --hard master

Isso funciona apenas se outras pessoas não clonaram o repositório.

Se você já dev_branchenviou para um controle remoto, precisa:

git push --force

Para empurrar com força para o controle remoto. Aviso: Isso quebrará o histórico do ramo para as pessoas que o clonaram antes! Em seguida, outras pessoas vão ter que fazer um git pull --rebaseno dev_branchpara obter as alterações.


Você também pode renomear o ramo dev para algo antigo e criar um novo ramo mastercom o mesmo nome:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

Ou use a oursestratégia - não sei por que ela não funcionaria para você:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

Com a solução de renomeação, acho que você descobrirá que agora não pode enviar dev_branchpara a origem (se ela tivesse uma) e também não terá mais uma masterfilial localmente.
288:

Obrigado @slhck! Por alguma razão, minha ramificação de estágio não estava sendo atualizada depois de fazer uma mesclagem normal. Continuava dizendo que meu ramo de palco estava atualizado. Usar a estratégia "nossa" resolveu isso para mim.
Slick Shinobi

o nosso afetaria apenas pedaços conflitantes, mas ele quer renovar completamente o ramo, não apenas os conflitos !? (isto é pelo menos o que eu preciso fazer e por que encontrei este Q) - Eu vou mudar o nome!
Martin Meeser 27/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.