Tutoriel Git - Rebase
Nous avons couvert les fusions de base comme
-
Fusion en avance rapide
-
Fusion à trois voies (récursive)
Dans ce tutoriel, nous allons présenter l’une des plus importantes caractéristiques de Git - le rebasage.
Qu’est-ce que git rebase ?
Rebaser signifie que vous changez le commit racine des branches basées sur, ou en d’autres termes, vous réinitialisez le commit de base au commit récent de la branche que vous envisagez de fusionner, comme la branche master
.
Voyons à quoi cela ressemble,
Nous avons les branches master
et Feature
dans ce diagramme et pendant que nous travaillions sur notre branche Feature
, d’autres membres de l’équipe ont continué à faire du travail sur master
.
Nous voulons rebaser notre branche avant de la fusionner à nouveau dans master
et quand nous lançons la commande rebase, cela change le commit sur lequel notre branche testing est basée au lieu de pointer vers C3
plutôt que C1
. Le graphique ci-dessous montre ce qui se passe après le rebasage.
Lorsque nous fusionnons les changements, il suffit de refaire une fusion rapide car les commits sont maintenant basés sur le dernier commit de master
. C’est pourquoi le rebasage est l’une des fonctionnalités les plus puissantes de git.
Après avoir fusionné cette branche Feature
rebasée vers le master
, le graphique du journal de commit sera comme ci-dessous,
Il semble que la branche Feature
n’ait jamais existé et que tous les journaux de commit soient en ligne droite.
Flux de travail de la base
-
Créer la branche de fonctionnalité
$ git checkout -b Feature
-
Faites des changements sur cette branche et commentez
$ git add modified.txt
$ git commit -m 'coment here'
-
La fonctionnalité de rebasage se branche sur
master
.
$ git rebase master
-
Fusionner la branche de fonctionnalité rebasée sur
master
$ git checkout master
$ git merge Feature
Règle d’or du rebasage
La règle d’or est de ne jamais rebaser une branche que vous avez rendue publique à cause de la réécriture de l’histoire.
Si vous rebasez une branche publique et que quelqu’un travaille sur cette branche après que vous l’ayez rebasée, il sera très difficile d’obtenir ces nouveaux changements dans votre branche master
parce que les autres développeurs travaillent toujours avec la branche master
originale.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook