Accéder au contenu principal

Git Rebase : Guide du débutant pour un contrôle de version rationalisé

Apprenez à utiliser Git rebase pour conserver l'historique des livraisons et améliorer la collaboration. Ce guide couvre les instructions étape par étape, les meilleures pratiques et les pièges courants à éviter lors du rebasage de branches dans Git.
Actualisé 19 mars 2025  · 8 min de lecture

Le contrôle des versions est l'un des aspects les plus importants du développement de logiciels modernes. Il vous permet de suivre les modifications, de collaborer efficacement et de conserver l'historique du code. Parmi les différents outils disponibles, Git se distingue comme l'un des systèmes les plus utilisés pour gérer les modifications de code.

Comme vous le découvrirez dans notre cours Introduction à GitGit permet d'effectuer des branchements pour travailler sur différentes fonctionnalités ou corrections sans affecter la base de code principale. Si la création de branches rend le développement plus souple, il est parfois difficile de les organiser. C'est là que Gitrebase intervient.

Comprendre les branches Git

Comme nous l'expliquons dans notre guide sur Git et GitHubles branches vous permettent de travailler sur de nouvelles fonctionnalités ou des corrections de bogues indépendamment de la base de code principale. Ils constituent un environnement isolé dans lequel des changements peuvent être apportés sans perturber les travaux en cours dans d'autres branches.

Il existe plusieurs flux de travail de ramification courants, notamment :

  • Branches en vedette : Elles sont utilisées pour développer de nouvelles fonctionnalités avant de les intégrer dans la branche principale.
  • Branches de lancement : Elles permettent de stabiliser le code avant une nouvelle version.
  • Branches de correctifs : Ils sont créés pour résoudre des problèmes critiques.

La gestion efficace de ces branches est cruciale pour maintenir un historique de code propre et organisé.

Comprendre les branches de Git

Qu'est-ce que Git Rebase ?

Git rebase est une commande qui vous permet de déplacer ou de réappliquer des commits d'une branche à une autre. Contrairement à la fusion, qui crée un nouveau commit combinant des modifications provenant de différentes branches, le rebasage applique les modifications une par une sur la branche cible. Cela permet d'obtenir un historique linéaire sans commits de fusion inutiles.

Lors d'un rebasing, Git prend chaque commit de la branche source et l'applique sur le dernier commit de la branche cible. L'historique des livraisons est ainsi plus facile à lire et à suivre. Nous expliquons plus en détail comment voir l'historique complet des livraisons d'un dépôt dans notre guide Guide Git Diff.

Qu'est-ce que Git rebase ?

Pourquoi utiliser Git Rebase ?

Le rebasage est utile pour plusieurs raisons :

  • Création d'un historique linéaire des livraisons. Au lieu d'avoir un historique avec de multiples commits de fusion, le rebasage garde le journal des commits propre et facile à comprendre.
  • Améliorer la collaboration et l'examen du code. Un historique clair des livraisons permet aux équipes d'examiner les modifications plus efficacement.
  • Éviter les commits de fusion inutiles. En rebasant au lieu de fusionner, vous pouvez maintenir les branches à jour sans encombrer le journal des livraisons.

Cependant, le rebasage peut être risqué, en particulier lorsque vous travaillez sur des branches partagées, car il réécrit l'historique des livraisons et peut provoquer des conflits ou rendre difficile le suivi des modifications. Il est préférable d'éviter le rebasage des branches publiques et de l'utiliser avec prudence dans les flux de travail collaboratifs.

Quand utiliser Git Rebase

Il existe quelques cas où l'utilisation de Git rebase est le bon choix. Nous avons étudié chacun d'entre eux en détail ci-dessous : 

Remise à niveau des branches de fonctionnalités locales

Lorsque vous travaillez sur une branche de fonctionnalités, il est courant de la mettre à jour avec les dernières modifications de la branche principale. Le rebasage, qui consiste à placer les commits de la branche fonctionnelle au-dessus de la branche principale la plus récente, permet de maintenir un historique des commits propre, ce qui constitue une alternative à la fusion.

Maintenir les branches de fonctionnalités à jour

Lorsque plusieurs développeurs travaillent sur le même dépôt, la branche principale change souvent. Le rebasage permet de maintenir la branche de fonctionnalités à jour sans ajouter de commits de fusion inutiles.

Le rebasage dans la collaboration d'équipe

Lorsque vous travaillez en équipe, le rebasage peut contribuer à prévenir les conflits avant qu'ils ne surviennent. En rebasant régulièrement une branche de fonctionnalités sur la branche principale, vous pouvez intégrer les changements de manière incrémentale, ce qui réduit le risque de conflits de fusion ultérieurs.

Guide pas à pas pour Git Rebase

Dans cette section, nous allons vous présenter le processus de rebasage avec Git, en vous donnant un guide étape par étape de tout ce que vous devez savoir.

Guide étape par étape pour Git rebase

Préparation d'un rebasement

Avant de commencer un rebase, assurez-vous que le répertoire de travail est propre. Il s'agit de valider ou d'archiver toute modification avant de procéder au rebasage. 

Git Rebase avec les changements Unstage

Vérifiez également que vous êtes sur la bonne branche en exécutant :

git branch

Récupérer les dernières modifications

Avant de procéder au rebasage, assurez-vous que le référentiel local contient les dernières modifications apportées par le référentiel distant :

git fetch origin

Passer à la branche des fonctionnalités

Déplacez-vous vers la branche qui a besoin d'être rebasée :

git checkout your-feature-branch

Rebasage sur la branche principale

Pour appliquer les commits de la branche de fonctionnalités sur la dernière branche principale, exécutez :

git rebase main

Git réappliquera chaque commit de la branche des fonctionnalités sur la branche principale mise à jour.

Application réussie de Git Rebase

Lorsque vous exécutez git rebase main, Git prend les modifications de la branche principale et les applique avant les commits de votre branche de fonctionnalités. Cela permet de conserver un historique propre et linéaire. Ce processus reproduit vos commits sur le dernier état de main, ce qui permet d'obtenir un historique linéaire du projet sans commits de fusion.

Par exemple, supposons que la branche principale comporte les commits A et B. Votre branche de fonctionnalités a divergé de A et comporte les commits C et D. 

A---B  (main)
 \
  C---D  (feature)

Après git rebase main, votre branche de fonctionnalité est mise à jour pour inclure les commits de main, suivis de vos commits :

---B---C'---D'  (feature)

Ici, C et D sont de nouveaux commits représentant vos changements originaux, maintenant basés sur B.

Résolution des conflits (le cas échéant)

Si des conflits surviennent pendant le rebasement, Git se met en pause et vous permet de les résoudre. 

Marquez les conflits comme résolus une fois qu'ils ont été corrigés :

git add .
git rebase --continue

Si nécessaire, vous pouvez interrompre le rebasement avec :

git rebase --abort

Terminer le rebasement

Après un rebasement réussi, vérifiez la branche et testez le code pour vous assurer que tout fonctionne correctement.

Rebasage interactif dans Git

Outre le changement de base commun que vous avez effectué dans la section précédente, vous pouvez également procéder à un changement de base interactif. Cela vous donne plus de contrôle, comme vous le découvrirez ci-dessous. 

Qu'est-ce que le rebasement interactif ?

Le rebasement interactif git rebase -i vous permet de modifier les modifications avant de les appliquer. Ce mode offre des options telles que la réorganisation, l'édition, l'écrasement et la suppression des livraisons.

Pourquoi utiliser le rebasage interactif ?

Le rebasage interactif est utile pour affiner l'historique des livraisons. Il permet de combiner plusieurs commits, d'éditer les messages de commit et de supprimer les commits inutiles avant de les fusionner dans la branche principale.

Utilisations courantes du rebasement interactif

  • Réorganisation des livraisons. Changez l'ordre des commits pour rendre l'historique plus clair.
  • Ecraser les commits multiples. Combinez plusieurs petits commits en un seul commit significatif.
  • Modification des messages de validation. Modifiez les messages de livraison avant de transférer les modifications. Il est important d'écrire des messages de livraison appropriés pour indiquer clairement ce qui a été mis à jour dans le code, comme nous le montrons dans notre tutoriel GIT Push and Pull. 

Comment effectuer un rebasement interactif

Pour lancer un rebasement interactif, exécutez :

git rebase -i HEAD~n

Remplacez n par le nombre de commits que vous souhaitez modifier. L'interface interactive vous permet de choisir comment traiter chaque livraison.

Meilleures pratiques et considérations

Lors du rebasage, il est important de respecter certaines bonnes pratiques. Nous allons en aborder quelques-uns dans cette section. 

Évitez de rebaser les branches partagées

Le rebasage d'une branche sur laquelle d'autres personnes travaillent peut entraîner des conflits et des confusions. Si une branche partagée a déjà été poussée, évitez de la rebaser.

Récupérer et rebaser régulièrement

La mise à jour d'une branche de fonctionnalités avec les dernières modifications de la branche principale permet d'éviter les conflits et de faciliter la fusion.

Sauvegarde avant rebasage

Comme le rebasing modifie l'historique des livraisons, il est conseillé de créer une sauvegarde avant de commencer. L'utilisation de git stash ou la création d'une branche temporaire peut éviter la perte accidentelle de données.

Les pièges les plus courants et comment les éviter

Examinons les difficultés les plus courantes rencontrées lors du rebasage et les moyens de les éviter. 

Rebasage accidentel d'une branche publique

Rebaser une branche qui a déjà été partagée peut créer des conflits pour d'autres contributeurs. Dans ce cas, utilisez git reflog pour récupérer les commits perdus.

Difficultés à résoudre les conflits

En cas de conflit, prenez le temps de le résoudre avec soin. L'utilisation d'outils tels que git mergetool peut faciliter le processus.

Perte de l'historique des livraisons

Si des commits disparaissent après un rebasement, utilisez git reflog pour les retrouver et les restaurer.

Conclusion

Git rebase est un outil puissant pour maintenir un historique des livraisons propre et améliorer la collaboration. En l'utilisant correctement - en évitant de rebaser les branches partagées, en récupérant régulièrement les mises à jour et en sauvegardant les modifications - vous pouvez rationaliser le contrôle de version et réduire les conflits de fusion.

Appliquez ces techniques pour que vos référentiels soient organisés et vos flux de travail efficaces. Vous souhaitez approfondir votre expertise Git ? Consultez notre Cours Git intermédiaire pour découvrir les principes fondamentaux de Git pour le contrôle de version dans vos projets de logiciels et de données.

FAQ sur le rebasement Git

Quelle est la différence entre Git rebase et Git merge ?

La fusion Git crée un nouveau commit qui combine les modifications de deux branches, en conservant les deux historiques intacts. Le rebasement Git, quant à lui, déplace les commits d'une branche et les applique séquentiellement à une autre branche, ce qui permet d'obtenir un historique linéaire des commits sans commits de fusion supplémentaires.

Quand dois-je utiliser Git rebase au lieu de Git merge ?

Utilisez Git rebase lorsque vous souhaitez conserver un historique des livraisons propre et linéaire, en particulier pour les branches de fonctionnalités. Elle est particulièrement utile avant de fusionner une branche de fonctionnalités dans la branche principale afin d'éviter des commits de fusion inutiles. Cependant, évitez de rebaser les branches partagées, car cela peut réécrire l'historique des livraisons et causer des problèmes aux collaborateurs.

Que se passe-t-il si je rencontre des conflits lors d'un rebasement Git ?

Si un conflit survient pendant le rebasage, Git fera une pause et vous demandera de résoudre les conflits. Vous devez corriger manuellement les fichiers en conflit, les mettre en scène en utilisant git add ., puis continuer le rebasement avec git rebase --continue. Si les conflits sont trop complexes, vous pouvez annuler le rebasement à l'aide de git rebase --abort et recommencer.

Est-il sûr de rebaser une branche qui a déjà été poussée vers un dépôt distant ?

Non, rebaser une branche qui a été poussée et partagée avec d'autres peut créer des problèmes car cela réécrit l'historique des livraisons. Si vous devez rebaser une branche partagée, communiquez avec votre équipe et utilisez git push --force-with-lease avec précaution pour éviter d'écraser les modifications de quelqu'un d'autre.

Comment annuler un rebasement Git en cas de problème ?

Si vous vous rendez compte qu'un rebase a causé des problèmes, vous pouvez utiliser git reflog pour trouver le commit précédent avant le rebase et le restaurer en utilisant git reset --hard . Une autre option consiste à utiliser git rebase --abort si le rebasement est toujours en cours et n'a pas encore été achevé.

Sujets

Les meilleurs cours sur Git

Certification disponible

Cours

Introduction à Git

2 hr
17.1K
Découvrez les principes fondamentaux de Git pour le contrôle des versions dans vos projets de logiciels et de données.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow