Nicolas Assouad
Software engineer et Entrepreneur
CV Github LinkedIn
Tutoriel : git rebase --onto
2020/02/17
#tutoriel

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'

EN FR