21/04/2021

4. Fusion de branche - rebase

Lu 109 fois Licence Creative Commons

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 branche master a divergé en ajoutant le commit 2293ee8. Cela peut venir d'une autre branche qui a été fusionné dans master pendant que vous travailliez sur experimental.


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 branche experimental avait été créé à partir du commit 2293ee8


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: