J'ai développé une nouvelle fonctionnalité sur une nouvelle branche et, du côté, j'ai apporté pas mal de modifications à ma branche principale.
Est-il possible de fusionner la branche principale dans ma nouvelle branche pour la maintenir à jour afin d'éviter les conflits de fusion une fois que la nouvelle fonctionnalité est terminée?
Réponses:
Vous pouvez soit
git merge master
ougit rebase master
, dans ce cas, je préférerais git rebase .Parce
git rebase
que cela donne l'impression que les modifications sur la branche de fonctionnalité ont été effectuées en plus des modifications sur la branche principale, ce qui simplifie le graphique de version.Rebase
En prenant l'exemple du manuel de git rebase ,
git rebase master
dans branchefeature
:Cependant, cela
git rebase
ne convient que lorsque la branche n’a pas été distribuée ou en cas de confusion et de travail supplémentaire en aval, car les anciennes commises A, B, C sont désormais remplacées par de nouvelles commissions A ', B', C ', plus F et G qui n'étaient pas là avant.Le résultat réel après
git rebase master
en branchefeature
est le suivant:Les commits A, B et C sont en suspens après la réabonnement, mais sont joignables
git reflog feature
.Fusionner
Si quelqu'un a retiré votre branche ou si vous l'avez poussée quelque part, vous devriez plutôt vous y fondre pour éviter toute confusion et tout travail supplémentaire à l'autre bout. Voir Récupération à partir d'une base amont .
Ceci est le résultat de
git merge master
in branchfeature
:Alternativement, si vous êtes
git merge feature
en branchemaster
, cela ressemblerait à ceci:la source
git rebase master
est extraite , faites-la , et cela «rebasonnera» les modifications apportées à la branche de manière à ce qu'elles soient «basées» sur les modifications apportées à la branche principale. Si les modifications dans la branche principale entrent en conflit avec les modifications dans la branche, git vous demandera de les résoudre et de continuer, de les ignorer ou d'abandonner. En cas de doute, vous pouvez utiliser une branche de test pour l’essayergit checkout -b test-feature feature
(en supposant que votre branche de fonctionnalité porte le nom "fonctionnalité").git rebase
ne devrait être utilisé que si la branche n'a pas été distribuée, ce qui, je suppose, était le cas puisque vous avez dit que c'était une nouvelle branche, désolée pour cela. Voir Récupération à partir d'une base amont dans les documents liés. Vous devrez utiliser à lagit merge
place. Et vous pouvez utilisergit reflog
pour retrouver votre tête de branche précédente si vous souhaitez la récupérer.