À mesure que la data science, l’ingénierie des données et le machine learning s’invitent dans toutes les activités quotidiennes d’une entreprise, les professionnels des données ne peuvent plus travailler en vase clos. Ils doivent collaborer étroitement avec les développeurs logiciels pour rendre les projets de data science opérationnels et évolutifs. Cela implique d’intégrer à leur boîte à outils des solutions issues du développement logiciel, dont Git.
Git est un outil open source de gestion de versions. Il permet aux développeurs et aux professionnels des données de suivre efficacement les modifications des fichiers d’un projet (scripts Python, jeux de données, etc.), afin que chacun dispose d’un historique complet des changements, puisse synchroniser ses tâches et collaborer sans perte d’information. Une excellente porte d’entrée vers Git est notre cours Introduction to Git.
L’une des fonctionnalités clés de Git est la gestion des branches. Les branches permettent de maintenir plusieurs versions d’un projet et d’en suivre l’évolution de manière structurée. À un moment donné, vous devrez intégrer les avancées d’une branche dans une autre. Plusieurs stratégies existent pour cela, notamment les commandes git merge et git rebase.
L’objectif de cet article est de présenter git rebase, une commande qui aide à intégrer des branches en déplaçant une séquence de commits d’une branche source au sommet d’une branche cible, généralement la branche main.
Comprendre Git rebase
Imaginez que vous travaillez sur un projet de data science avec d’autres spécialistes des données, et que vous êtes chargé de développer un tableau de bord avec PowerBI à partir de données ajoutées lors de commits précédents.
Comme vous êtes responsable du tableau de bord, il est logique de créer une branche dédiée. Pendant ce temps, le reste de l’équipe continue d’alimenter la branche main avec de nouveaux commits. La situation ressemble à ceci :

Figure 1. Source
Supposons maintenant que les derniers commits de la branche main soient utiles à votre branche. Par exemple, ils ajoutent de nouveaux jeux de données qui enrichissent votre tableau de bord. Vous devez alors intégrer ces nouveaux commits dans votre branche. Deux options s’offrent à vous : merge ou rebase.
Si vous combinez les branches avec git merge, vous créez dans votre branche un nouveau commit de fusion qui regroupe les dernières modifications de main et celles de votre branche.

Figure 2. Source
git merge est une opération non destructive : l’historique des deux branches ne change pas. C’est positif pour la traçabilité, mais cela ajoute aussi de la complexité, car vous risquez de multiplier les commits de fusion issus de main, surtout si main est très active. Cela peut également générer des conflits de fusion, comme expliqué dans ce billet sur la résolution des conflits de merge.
À l’inverse, avec git rebase, vous déplacez l’ensemble de votre branche au sommet de main. Cette opération réécrit l’historique du projet en insérant de nouveaux commits pour chacun de ceux que vous avez créés dans votre branche. La branche résultante ressemble à ceci :

Figure 3. Source
git rebase est une excellente option pour garder un historique clair. En déplaçant toute la branche de fonctionnalité à la pointe de main, l’historique devient parfaitement linéaire et plus facile à parcourir. git rebase supprime aussi les commits de fusion supplémentaires nécessaires avec git merge.
Cependant, git rebase comporte des risques et des écueils. Comme il modifie l’historique des commits et qu’aucun commit de fusion n’est créé, il peut devenir difficile d’identifier quand les changements issus du rebase ont été intégrés, au détriment de la traçabilité. Plus grave encore, si des modifications affectant la branche main surviennent par inadvertance et que vous les poussez vers le dépôt distant, vous risquez de provoquer des changements inattendus en conflit avec le travail d’autres développeurs. Utilisez donc git rebase avec précaution et uniquement dans certains cas.
Passons maintenant à la pratique !
Réaliser un Git rebase
Pour illustrer le fonctionnement de git rebase, reprenons l’exemple précédent. Sur un projet collaboratif, commencez par récupérer et télécharger le contenu du dépôt distant où se trouve le projet (généralement dans le cloud ou sur un serveur distant) et mettez à jour votre dépôt local avec les derniers changements, afin d’être aligné avec l’équipe. Utilisez la commande git pull dans votre terminal :
git pull
Vous êtes prêt à créer une nouvelle branche dédiée au tableau de bord PowerBI. Utilisez :
git checkout -b powerbi_dashboard
Une fois la branche créée, vous commencez à travailler et enregistrez vos avancées avec plusieurs commits. Par exemple, vous créez un nouveau commit après avoir assemblé les graphiques destinés au tableau de bord.
git add .
git commit -m "powerbi_dashboard/add_plots"
Entre-temps, vos collègues font avancer la branche main avec des changements utiles à votre projet de tableau de bord. À nouveau, commencez par exécuter git pull pour récupérer les mises à jour du dépôt distant et les copier dans votre dépôt local. Vous retrouvez alors la situation décrite en figure 1.
À partir de là, vous pouvez choisir git merge ou git rebase. Si vous optez pour la seconde option, il vous suffit d’exécuter git rebase pour déplacer votre branche au sommet de main.
git checkout -b powerbi_dashboard
git rebase main
Rebase interactif
Si vous n’indiquez rien de plus, git rebase transpose tous les commits de votre branche à la tête de main. Toutefois, le mode interactif vous donne un contrôle plus fin sur la façon dont les commits sont déplacés. Vous pouvez ainsi nettoyer votre historique de commits avant de repositionner la branche sur main, pour plus de clarté.
Pour lancer un rebase interactif, ajoutez l’option i à la commande git rebase :
git checkout -b powerbi_dashboard
git rebase -i main
Un éditeur s’ouvre et vous permet de définir le comportement de Git pour chaque commit à rebaser. Parmi les options possibles : modifier les messages de commit, fusionner (squash) des commits ou en supprimer. La liste complète figure dans la documentation de Git. Voici à quoi ressemble l’éditeur :
pick 46s9451 powerbi_dashboard/add_plots #garder le commit
reword 94561f6 powerbi_dashboard/set_data_connectors #modifier le message du commit
drop 1f094y8 powerbi_dashboard/minor_changes #supprimer le commit
Bonnes pratiques pour Git rebase
git rebase est une commande utile, mais elle peut créer de la confusion si elle est utilisée au mauvais moment. Par principe, privilégiez git rebase sur des dépôts locaux.
En particulier, git rebase est très pratique lorsque vous travaillez sur une branche dédiée à une fonctionnalité précise. Dans ce contexte, il permet de garder un historique propre et linéaire, ce qui facilite le suivi de vos avancées par les autres développeurs au moment de pousser vos commits vers le dépôt distant.
Vous pouvez toutefois rencontrer des conflits de fusion pendant votre rebase, surtout si vous n’avez pas intégré depuis un moment les commits de vos collègues présents dans main.
Pour limiter ces conflits entre votre branche et les derniers commits de main, rebasez fréquemment votre branche par rapport à main. Vous serez ainsi sûr de travailler sur une base commune.
Enfin, mieux vaut prévenir que guérir. Avant d’envisager un git rebase, validez votre approche avec le reste de l’équipe afin d’obtenir des recommandations sur la manière et l’endroit où l’utiliser.
Conclusion
Vous êtes arrivé au bout de ce tutoriel, bravo ! git rebase mérite sa place dans vos workflows Git. Et il y a bien plus à apprendre sur Git, un incontournable pour les développeurs comme pour les professionnels des données.
Voici quelques ressources DataCamp pour aller plus loin avec Git. Bonne découverte !
Je suis analyste de données indépendant et je collabore avec des entreprises et des organisations du monde entier dans le cadre de projets de science des données. Je suis également formateur en science des données avec plus de 2 ans d'expérience. Je rédige régulièrement des articles sur les sciences des données en anglais et en espagnol, dont certains ont été publiés sur des sites web réputés tels que DataCamp, Towards Data Science et Analytics Vidhya En tant que scientifique des données ayant une formation en sciences politiques et en droit, mon objectif est de travailler à l'interaction des politiques publiques, du droit et de la technologie, en tirant parti du pouvoir des idées pour faire avancer des solutions et des récits innovants qui peuvent nous aider à relever des défis urgents, à savoir la crise climatique. Je me considère comme un autodidacte, un apprenant permanent et un fervent partisan de la pluridisciplinarité. Il n'est jamais trop tard pour apprendre de nouvelles choses.
