cClaude.rocks ☕ Le blog

L'informatique et les nouvelles technologies

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 - 2020 | 🕸 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog