GIT Overwrite branch avec master

33

J'ai une ancienne branche de développement complètement obsolète. Je ne veux pas le supprimer mais je veux remplacer son contenu entièrement par la branche master. Je veux dire dev_branch = master

J'ai essayé:

git merge -s ours dev_branch

Mais ça n'a pas marché ...

Cornwell
la source

Réponses:

54

Si vous voulez que tous les changements de masterdans dev_branch, puis:

git checkout dev_branch
git reset --hard master

Cela ne fonctionne que si d'autres personnes n'ont pas cloné le référentiel.

Si vous avez déjà dev_branchpoussé vers une télécommande, vous devez faire:

git push --force

Pour forcer la poussée vers la télécommande. Attention: cela brisera l'histoire de la branche pour les personnes qui l'ont clonée auparavant! Ensuite, d' autres personnes devront faire git pull --rebasele dev_branchpour obtenir les changements.


Vous pouvez également renommer la branche dev en quelque chose d'ancien, puis créer une nouvelle branche masteravec le même nom:

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

Ou, utilisez la oursstratégie - vous ne savez pas pourquoi cela ne fonctionnerait pas pour vous:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master
slhck
la source
Avec la solution de changement de nom, je pense que vous constaterez que vous ne pouvez plus pousser dev_branchvers l'origine (si elle en avait une) et que vous n'aurez plus de masterbranche localement.
aidan
Merci @slhck! Pour une raison quelconque, ma branche de scène n'était pas mise à jour après avoir effectué une fusion normale. Il a continué à dire que ma branche de scène était à jour. L'utilisation de la stratégie "nôtre" a résolu ce problème pour moi.
Slick Shinobi
la nôtre n'affecterait que les morceaux en conflit, mais il veut renouveler complètement la branche, pas seulement les conflits!? (c'est au moins ce que je dois faire et pourquoi j'ai trouvé ce Q) - J'irai pour le renommer!
Martin Meeser