Nous allons considérer le scénario suivant : nous avons une branche principale
main
et nous avons travaillé sur une nouvelle fonctionnalité en la découpant en 2 branches successives,
featA
et featB
.
main featA featB
| | |
v v v
ca--c1--c2--c3--c4--c5
Des commits on été rajoutés à la branche principale. et l'on souhaiterait rebase nos branches sur la nouvelle version
de main
.
main
|
v
ca--cb--cc
Pour cela nous allons effectuer deux rebase successifs, un premier simple et un deuxième avec la commande
--onto
.
git rebase main featA
git rebase --onto featA c3 featB
La commande --onto
permet de rebase un interval de commits. Ici, on rebase sur
featA
l'interval de commits allant de c3
(non inclus) à featB
, c'est à dire
c4--c5
. A titre de comparaison, un rebase simple aurait rebase également les commits de l'ancienne
branche featA
, et donc dédoubler les commits c1--c2--c3
.
On obtient finalement l'arbre de commits suivant :
main featA featB
| | |
v v v
ca--cb--cc--c1'--c2'--c3'--c4'--c5'