Git Rebase : placer les modifications en tête de branche

Git Rebase intègre les modifications d’une branche à une autre. La commande Git offre plus de possibilités que Git Merge, mais doit être utilisée avec précaution.

Domaine Internet pas cher

Bien plus qu'un simple domaine !

Personnalisez votre présence en ligne avec un nom de domaine pertinent.

Email
Certificat SSL
Assistance 24/7

Git Rebase, c’est quoi ?

Une particularité importante de Git est la possibilité de travailler en parallèle, seul ou en équipe, à différents endroits d’un projet pour y apporter des modifications, résoudre des problèmes et en faire profiter tout le monde par le partage des connaissances acquises. Cela fonctionne d’une part grâce à l’utilisation de dépôts locaux, et d’autre part, à un niveau en-dessous, grâce à l’utilisation de forks appelées « branches ». Il est possible de travailler dans celles-ci de manière autonome sur une modification sans que cela n’ait aucune influence sur le reste du projet. Pour intégrer les modifications 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 différentes. Git Rebase est considéré comme la solution la plus sophistiqué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’historique du projet, en créant de nouveaux commits pour les commits de la branche d’origine. On distingue deux modes principaux pour Git Rebase : le mode manuel et le mode interactif.

Git Rebase : syntaxe et fonctionnement

Pour comprendre le fonctionnement exact de Git Rebase, il convient d’abord de jeter un coup d’œil à sa syntaxe, assez simple à comprendre. Dans l’exemple suivant, nous utilisons Git Checkout, que vous retrouverez aussi dans notre Git Cheat Sheet avec PDF à télécharger, pour appeler la branche « nouvelle » que nous voulons intégrer dans le master avec Git Rebase. Cela se fait très simplement via la commande correspondante, pour laquelle nous devons simplement indiquer la branche-cible. Voici le code correspondant :

git checkout nouvelle
git rebase master

La branche « nouvelle » est ainsi placée à la tête de la branche principale (master) avec modification de l’historique du projet.

Mode interactif de Git Rebase

L’exemple ci-dessus utilise la syntaxe standard pour Git Rebase. La commande est automatiquement exécutée dans la branche en cours d’utilisation 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 interactive de Git Rebase offre d’autres options utiles, comment par exemple la sélection, la modification, le déplacement ou la suppression de chaque commit. Il est ainsi possible de nettoyer l’historique 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 automatiquement avec une liste de tous les commits, adaptable à votre convenance.

Autres options

Pour les utilisateurs les plus avancés, Git Rebase propose d’autres options utiles. Voici les principales :

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électionnés

Git Rebase et Git Merge

Sur de nombreux points, Git Rebase ressemble fortement à Git Merge. Les deux commandes intègrent les modifications d’une branche dans une autre, mais Git Merge ne touche pas du tout aux branches existantes, un avantage si l’on souhaite conserver l’ensemble de l’historique. La procédure génère cependant de nombreux commits de fusion inutiles. Git Rebase est une solution linéaire qui offre de nombreuses possibilités avec son approche interactive, considérée comme une option de choix pour les utilisateurs avancés.

Avantages et inconvénients de Git Rebase

Git Rebase présente à la fois un gros avantage et un inconvénient potentiel. Le point positif de cette commande est d’aboutir à un historique propre et clair de votre projet. Grâce à Git Rebase, celui-ci devient entièrement linéaire et renonce à tous les forks du début à la fin. La navigation est facilitée et l’ensemble du projet allégé. Toutefois, cette réduction a aussi pour effet de ne plus assurer la traçabilité des modifications. Certains commits peuvent être perdus, aboutissant à des conflits de fusion, surtout pour de projets avec de nombreux développeurs. Git Rebase reste donc une commande très efficace et utile, à utiliser avec précaution.

Cela signifie avant tout que vous ne devez pas utiliser Git Rebase sur des branches publiques. Sinon, vous intégreriez certes la branche principale dans votre référentiel local, mais les membres de votre équipe continueraient à travailler sur une version totalement différente. Il serait donc très difficile, voire impossible, de réunir et de synchroniser toutes les parties manquantes.

Conseil

En ligne, et rapidement ! Avec Deploy Now de IONOS, mettez vos sites Internet et vos applications directement en ligne grâce à GitHub et profitez de nombreuses fonctionnalités. Testez l’outil pour vos premiers projets, c’est gratuit !