Git Rebase intègre les mo­di­fi­ca­tions d’une branche à une autre. La commande Git offre plus de pos­si­bi­li­tés que Git Merge, mais doit être utilisée avec pré­cau­tion.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Git Rebase, c’est quoi ?

Une par­ti­cu­la­rité im­por­tante de Git est la pos­si­bi­lité de tra­vail­ler en parallèle, seul ou en équipe, à dif­fé­rents endroits d’un projet pour y apporter des mo­di­fi­ca­tions, résoudre des problèmes et en faire profiter tout le monde par le partage des con­nais­sances acquises. Cela fonc­tionne d’une part grâce à l’uti­li­sa­tion de dépôts locaux, et d’autre part, à un niveau en-dessous, grâce à l’uti­li­sa­tion de forks appelées « branches ». Il est possible de tra­vail­ler dans celles-ci de manière autonome sur une mo­di­fi­ca­tion sans que cela n’ait aucune influence sur le reste du projet. Pour intégrer les mo­di­fi­ca­tions d’une branche dans une autre, le logiciel de contrôle de versions propose deux options.

Les commandes Git Merge et Git Rebase servent toutes les deux à la fusion, tout en étant très dif­fé­rentes. Git Rebase est considéré comme la solution la plus so­phis­ti­quée. Avec cette commande, une série de commits est déplacée dans un nouveau commit de base. La base de ce commit est ainsi modifiée et une branche entière est placée à la tête d’une autre branche. Pour cela, Git Rebase réécrit l’his­to­rique du projet, en créant de nouveaux commits pour les commits de la branche d’origine. On distingue deux modes prin­ci­paux pour Git Rebase : le mode manuel et le mode in­te­rac­tif.

Git Rebase : syntaxe et fonc­tion­ne­ment

Pour com­prendre le fonc­tion­ne­ment exact de Git Rebase, il convient d’abord de jeter un coup d’œil à sa syntaxe, assez simple à com­prendre. Dans l’exemple suivant, nous utilisons Git Checkout, que vous re­trou­ve­rez aussi dans notre Git Cheat Sheet avec PDF à té­lé­char­ger, pour appeler la branche « nouvelle » que nous voulons intégrer dans le master avec Git Rebase. Cela se fait très sim­ple­ment via la commande cor­res­pon­dante, pour laquelle nous devons sim­ple­ment indiquer la branche-cible. Voici le code cor­res­pon­dant :

git checkout nouvelle
git rebase master

La branche « nouvelle » est ainsi placée à la tête de la branche prin­ci­pale (master) avec mo­di­fi­ca­tion de l’his­to­rique du projet.

Mode in­te­rac­tif de Git Rebase

L’exemple ci-dessus utilise la syntaxe standard pour Git Rebase. La commande est au­to­ma­ti­que­ment exécutée dans la branche en cours d’uti­li­sa­tion et appliquée à la branche HEAD (dans ce cas, « master »). Tous les commits sont déplacés en tête de la nouvelle branche. La variante in­te­rac­tive de Git Rebase offre d’autres options utiles, comment par exemple la sélection, la mo­di­fi­ca­tion, le dé­pla­ce­ment ou la sup­pres­sion de chaque commit. Il est ainsi possible de nettoyer l’his­to­rique selon ses envies, voire de l’optimiser le cas échéant. La commande ressemble presque à la version standard avec le petit ajout « -i » :

git checkout nouvelle
git rebase -i master

À l’exécution de cette commande, un éditeur s’ouvre au­to­ma­ti­que­ment avec une liste de tous les commits, adaptable à votre con­ve­nance.

Autres options

Pour les uti­li­sa­teurs les plus avancés, Git Rebase propose d’autres options utiles. Voici les prin­ci­pales :

git rebase -d Supprime le commit du bloc de commit final à la lecture
git rebase -p Conserve le commit tel quel dans la branche
git rebase -x Exécute un script shell pour les commits sé­lec­tion­nés

Git Rebase et Git Merge

Sur de nombreux points, Git Rebase ressemble fortement à Git Merge. Les deux commandes intègrent les mo­di­fi­ca­tions d’une branche dans une autre, mais Git Merge ne touche pas du tout aux branches exis­tantes, un avantage si l’on souhaite conserver l’ensemble de l’his­to­rique. La procédure génère cependant de nombreux commits de fusion inutiles. Git Rebase est une solution linéaire qui offre de nom­breuses pos­si­bi­li­tés avec son approche in­te­rac­tive, con­si­dé­rée comme une option de choix pour les uti­li­sa­teurs avancés.

Avantages et in­con­vé­nients de Git Rebase

Git Rebase présente à la fois un gros avantage et un in­con­vé­nient potentiel. Le point positif de cette commande est d’aboutir à un his­to­rique propre et clair de votre projet. Grâce à Git Rebase, celui-ci devient en­tiè­re­ment linéaire et renonce à tous les forks du début à la fin. La na­vi­ga­tion est facilitée et l’ensemble du projet allégé. Toutefois, cette réduction a aussi pour effet de ne plus assurer la tra­ça­bi­lité des mo­di­fi­ca­tions. Certains commits peuvent être perdus, abou­tis­sant à des conflits de fusion, surtout pour de projets avec de nombreux dé­ve­lop­peurs. Git Rebase reste donc une commande très efficace et utile, à utiliser avec pré­cau­tion.

Cela signifie avant tout que vous ne devez pas utiliser Git Rebase sur des branches publiques. Sinon, vous in­té­gre­riez certes la branche prin­ci­pale dans votre ré­fé­ren­tiel local, mais les membres de votre équipe con­ti­nue­raient à tra­vail­ler sur une version to­ta­le­ment dif­fé­rente. Il serait donc très difficile, voire im­pos­sible, de réunir et de syn­chro­ni­ser toutes les parties man­quantes.

Conseil

En ligne, et ra­pi­de­ment ! Avec Deploy Now de IONOS, mettez vos sites Internet et vos ap­pli­ca­tions di­rec­te­ment en ligne grâce à GitHub et profitez de nom­breuses fonc­tion­na­li­tés. Testez l’outil pour vos premiers projets, c’est gratuit !

Aller au menu principal