112 votes

Fusionner GIT master dans une branche

J'ai développé une nouvelle fonctionnalité sur une nouvelle branche, et en parallèle, j'ai effectué un certain nombre de changements sur ma branche principale.

Est-il possible de fusionner la branche maîtresse dans ma nouvelle branche pour la maintenir à jour afin de ne pas avoir trop de conflits de fusion une fois la nouvelle fonctionnalité terminée ?

144voto

Paul Ivanov Points 991

Vous pouvez soit git merge master o git rebase master .

Si la branche n'a pas été distribuée à d'autres personnes, dans ce cas je préférerais git rebasement .

Parce que git rebase donne l'impression que les modifications de la branche des fonctionnalités ont été effectuées par-dessus les modifications de la branche principale, ce qui simplifie le graphique de version.

Rebasement

En prenant l'exemple de l git rebase manual , git rebase master dans la branche feature :

      A---B---C feature                             A'--B'--C' feature
     /                   --rebase-->               /
D---E---F---G master                  D---E---F---G master

Cependant, git rebase ne convient que lorsque personne d'autre ne travaille dessus, sinon il y aura de la confusion et du travail supplémentaire pour eux, car les anciens commits A, B, C sont maintenant remplacés par de nouveaux commits A', B', C', plus F et G qui n'étaient pas là avant.

Le résultat réel après git rebase master dans la branche feature c'est ça :

      ( A---B---C ) feature@{1}
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

commits A, B, C sont dangling après la rebase, mais sont atteignables à travers git reflog feature como feature@{1} .

Fusionner

Si quelqu'un a tiré votre branche, ou si vous l'avez poussée quelque part, vous devriez plutôt fusionner avec elle, pour éviter toute confusion et tout travail supplémentaire de l'autre côté. Voir Récupération d'un rebasement en amont .

C'est le résultat de git merge master dans la branche feature :

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

Par ailleurs, si vous git merge feature dans la branche master cela ressemblerait à ceci :

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X