Mettre à jour une branche obsolète par rapport à master dans un dépôt Git

123

J'ai un référentiel Git dont la branche (locale et distante) est devenue obsolète. Je voudrais mettre cette branche à jour avec la branche master, mais je ne sais pas comment faire cela. Il y aura aussi probablement de nombreux conflits de fusion.

Comment puis-je amener ou mettre à jour cette branche obsolète dans le même état que la branche principale?

Andrew
la source
1
si vous êtes venu ici pour savoir comment mettre à jour une branche obsolète par rapport à master dans un dépôt Git si vous n'avez apporté aucune modification à la branche locale, alors faites simplement un "git pull"
minable le

Réponses:

152

Mettez à jour la branche principale, ce que vous devez faire quoi qu'il en soit.

Ensuite, l'un des:

  1. Rebase l'ancienne branche contre la branche principale. Résolvez les conflits de fusion pendant le rebase, et le résultat sera une branche à jour qui fusionne proprement avec master.

  2. Fusionnez votre branche dans master et résolvez les conflits de fusion.

  3. Fusionnez master dans votre branche et résolvez les conflits de fusion. Ensuite, la fusion de votre branche dans master devrait être propre.

Aucun de ceux-ci n'est meilleur que l'autre, ils ont juste des modèles de compromis différents.

J'utiliserais l'approche rebase, qui donne des résultats globaux plus clairs aux lecteurs ultérieurs, à mon avis, mais ce n'est rien en dehors du goût personnel.

Pour rebaser et conserver la branche, vous devez:

git checkout <branch> && git rebase <target>

Dans votre cas, consultez l'ancienne succursale, puis

git rebase master 

pour le faire reconstruire contre le maître.

Daniel Pittman
la source
1
@Andrew: git rebase:)
CharlesB
1
git checkout $branch && git rebase $target- dans votre cas, vérifiez l'ancienne branche, puis git rebase masterfaites-la reconstruire contre master.
Daniel Pittman
3
Votre repo est-il public? Est-il acceptable de rebaser s'il est public?
event_jr
4
Bon conseil lors de l'utilisation de rebase dans des branches distantes: effectuez ce rebase de branche distante contre la branche master uniquement lorsque personne ne pousse les commits sur cette branche distante.
Dherik
Une fois le rebase terminé, vous devez pousser les modifications à l'aide de l' -foption. Au fur et à mesure que vous réécrivez l'histoire, une poussée énergique est nécessaire.
Opster Elasticsearch Ninja