Rebase simple des commits dans Git
Le système Git fournit deux méthodes pour intégrer des modifications lors du travail avec des branches : la fusion et le rebase.
L'avantage du rebase est que l'historique des commits des deux branches, contrairement à la fusion, apparaîtra plus linéaire et plus facile à comprendre pour les membres de l'équipe travaillant sur un même projet.
Dans Git, la fusion, effectuée à l'aide de la
commande merge, se produit comme
une fusion à trois voies des derniers changements
des deux branches fusionnées et de l'instantané le plus récent
de la branche parente, commune à ces deux branches fusionnées.
Seuls les instantanés finaux des commits des branches
sont fusionnés, et non tout leur
historique précédent.
Le rebase consiste à appliquer les modifications
d'une branche (la courante) par-dessus une autre branche (celle qui est fusionnée
avec la courante). Créons une branche test dans laquelle
nous allons créer un nouveau fichier file.txt,
l'indexer et faire un commit :
git branch test
git switch test
git add file.txt
git commit -m "commit from branch test"
Maintenant, basculons sur la branche test
et rebasons-la par rapport à la branche principale
master :
git checkout test
git rebase master
Le processus de rebase lui-même se déroule comme suit :
d'abord, Git prend un instantané de la branche parent
master, qui est sauvegardé dans un fichier temporaire. Ensuite,
la branche courante test insère ses modifications
après le commit le plus récent de la branche master.
Désormais, l'historique des commits de la branche principale
ressemblera à ceci :
Après le rebase, l'historique des commits de la
branche test ressemblera également
à celui de la branche master.
Ensuite, il est possible de passer sur la branche master
et d'effectuer une fusion par avance rapide,
c'est-à-dire que master redevient la branche principale et inclut
tous les changements de la branche test :
git merge test
Créez deux branches test1 et test2,
chacune contenant trois commits sur
différents fichiers, puis effectuez leur
fusion par un rebase simple.