Fusionner une branche en changeant de base
Si vous préférez avoir un historique linéaire ou que le workflow utilisé (un "cycle de travail") le recommande voire l'impose, la méthode de fusion à utiliser sera le fast forward. Mais comment faire si la branche principale a divergé depuis la création de la branche de travail ?
Représentation:
Ici la branchemaster
a divergé en ajoutant le commit2293ee8
. Cela peut venir d'une autre branche qui a été fusionné dansmaster
pendant que vous travailliez surexperimental
.
Pour réaliser un fast forward, il est nécessaire que la tête de master
soit un ancêtre de la branche experimental
. Il faut donc déplacer la base de la branche (actuellement f6b5327
) vers la tête de master
.
En étant sur la branche de travail, utiliser la commande rebase
en indiquant le nom de la branche principale:
git checkout experimental
[output]Switched to branch 'experimental'
git rebase master
[output]Successfully rebased and updated refs/heads/experimental.
Représentation du rebase:
En déplaçant la base, c'est comme si la brancheexperimental
avait été créé à partir du commit2293ee8
Avec cet historique, on peut désormais effectuer une fusion, Git effectuera un fast forward:
git checkout master
[output]Switched to branch 'master'
git merge experimental
[output]Updating 2293ee8..7df0b98
[output]Fast-forward
[output] branches.md | 4 ++++
[output] 1 file changed, 4 insertions(+)
[output] create mode 100644 branches.md
Résultat: