cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

Dans le contexte de la gestion de version avec git, voici un cas de figure qui arrive assez frĂ©quemment lorsqu’on utilise les branches.


ඏ

Imaginons donc le scénario suivant :

Un jour vous crĂ©er une branche Alpha pour dĂ©velopper une nouvelle fonctionnalitĂ©, ce dĂ©veloppement est un peu long et n’aboutis pas immĂ©diatement ou un « bug » vient perturber l’ordre de chose, bref vous utilisez git comme il est prĂ©vu d’ĂȘtre utilisĂ©.

Donc d’autre fonctionnalitĂ© arrive peu Ă  peu sur la branche principale, et un peu plus tard lors d’un nouveau dĂ©veloppement sur une branche BĂȘta vous souhaitez rĂ©cupĂ©rer le code provenant de la branche Alpha sans pour autant faire une sale fusion (« merge »), pour garder l’historique des 2 branches.

Nous partons donc de la situation suivante :

et que l’on souhaite obtenir :

Cela correspond typiquement à une fonctionnalité qui a été commencée, pas finie et entre temps de nouveaux développements ont été réalisés.

Non la solution ne passe pas par une fusion (en anglais merge) mais en utilisant la notion de rebase de git.

Le processus de rebase consiste Ă  rejouer des commits Ă  partir d’une position donnĂ©e.


ඏ

git rebase <branche>

RĂ©initialisez la branche extraite Ă  <branche>, appliquez les diffĂ©rences (entre HEAD prĂ©cĂ©dent et l’ancĂȘtre commun) et validez.

git checkout alpha
git rebase beta

ඏ

git rebase <branche1> <branche2>

RĂ©initialisez <branche2> Ă  <branche1>, appliquez les diffĂ©rences (entre <branche2 prĂ©cĂ©dente> et l’ancĂȘtre commun) et validez.

git rebase beta alpha

ඏ

git rebase --onto <branche1> <branche2>

Réinitialisez la branche extraite à <branche1>, appliquez les différences (entre les versions précédentes de HEAD et <branche2>) et validez.

git checkout alpha
git rebase --onto beta X2

ඏ

git rebase --onto <branche1> <branche2> <branche3>

Réinitialisez <branche2> sur <branche1>, appliquez les différences (entre les versions précédentes de HEAD et <branche2>) et validez.

git rebase --onto beta X2 alpha

ඏ

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog