Comment annuler des commits Git en utilisant la commande Rebase

Ce tutoriel explique comment annuler des commits Git avec la commande rebase, pour manipuler l'historique.

Louis Dupont

Louis Dupont

5 June 2025

Comment annuler des commits Git en utilisant la commande Rebase

Git est l'un des systèmes de contrôle de version les plus utilisés dans le développement logiciel. Lorsque vous travaillez sur des projets, vous ferez inévitablement des commits que vous souhaiterez plus tard annuler, modifier ou supprimer complètement. Ce tutoriel se concentre spécifiquement sur la façon d'annuler les commits Git à l'aide de la commande rebase, qui offre de puissantes options pour manipuler votre historique des commits.

Que vous ayez accidentellement commis des informations sensibles, inclus du code erroné ou que vous souhaitiez simplement nettoyer votre historique des commits, comprendre comment annuler les commits Git est une compétence essentielle pour chaque développeur.

Optimisez votre développement API avec Apidog

button

Bien que la gestion efficace de vos commits Git soit cruciale pour le contrôle de version, disposer des bons outils pour le développement et les tests d'API est tout aussi important. Envisagez de passer à Apidog, la meilleure alternative à Postman sur le marché aujourd'hui.

Apidog combine la documentation, la conception, la simulation, les tests et la collaboration d'API en une seule plateforme, éliminant ainsi le besoin de basculer entre plusieurs outils.

Grâce à son interface intuitive, ses capacités de synchronisation automatique et ses fonctionnalités complètes, Apidog améliore la productivité et rationalise l'ensemble du cycle de vie du développement d'API.

Alors que nous approfondissons les techniques de rebase Git, gardez à l'esprit que l'adoption d'outils efficaces comme Apidog peut encore optimiser votre flux de travail de développement.

button

Comprendre la structure des commits Git

Avant de plonger dans les techniques d'annulation, examinons comment Git stocke les informations de commit. Chaque commit Git :

  1. Possède un identifiant de hachage unique
  2. Pointe vers son ou ses commits parents
  3. Contient des métadonnées (auteur, date, message de commit)
  4. Stocke un instantané de votre code à ce moment-là

Lorsque vous devez annuler un commit Git, vous souhaitez essentiellement modifier cette chaîne de commits d'une manière ou d'une autre. En fonction de vos besoins spécifiques, vous pouvez adopter plusieurs approches.

Git Revert vs. Git Reset vs. Git Rebase : choisir le bon outil Git

Il existe trois façons principales d'annuler un commit Git :

1. Git Revert

git revert HEAD

Cela crée un nouveau commit qui annule les modifications d'un commit précédent. Votre commit d'origine reste dans l'historique, mais ses modifications sont inversées.

Idéal pour : lorsque vous souhaitez conserver un enregistrement de l'exécution du commit, mais annuler ses effets. Il s'agit de l'option la plus sûre lorsque vous travaillez avec des référentiels partagés.

2. Git Reset

git reset --soft HEAD^

Cela déplace le pointeur de votre branche vers un commit précédent. L'indicateur --soft conserve vos modifications dans la zone de préparation, tandis que --hard les supprimerait complètement.

Idéal pour : lorsque vous souhaitez supprimer complètement les commits récents de l'historique et que vous n'avez pas encore partagé votre travail.

3. Git Rebase

git rebase -i HEAD~n  # where n is the number of commits to show

Cela vous permet de manipuler l'historique des commits de différentes manières, notamment en supprimant complètement les commits.

Idéal pour : les utilisateurs Git avancés qui souhaitent un contrôle précis sur leur historique des commits.

La commande Git Rebase : un puissant outil de manipulation de l'historique

La commande rebase est l'une des fonctionnalités les plus puissantes de Git. Contrairement à merge, qui crée un nouveau commit pour intégrer les modifications, rebase réécrit l'historique des commits en appliquant les commits en haut d'un autre commit de base.

Le rebase interactif (indicateur -i) est particulièrement utile pour annuler les commits, car il vous permet de :

Bien que puissant, rebase doit être utilisé avec prudence car il réécrit l'historique Git, ce qui peut créer des problèmes dans les environnements collaboratifs.

Comment annuler un commit Git à l'aide de Git Rebase

Examinons le processus d'annulation d'un commit Git à l'aide de la commande rebase :

Étape 1 : démarrer une session Git Rebase interactive

Tout d'abord, déterminez jusqu'où dans l'historique vous devez remonter. Si vous souhaitez annuler les trois derniers commits, vous utiliserez :

git rebase -i HEAD~3

Cela ouvrira votre éditeur de texte par défaut avec une liste de commits, le plus récent en bas :

pick f2a9770 Add feature X
pick c69a283 Fix bug in feature X
pick 7c6b236 Update documentation

Étape 2 : supprimer le commit Git

Pour annuler un commit, remplacez le mot « pick » par « d » (ou « drop ») pour le commit que vous souhaitez supprimer :

pick f2a9770 Add feature X
d c69a283 Fix bug in feature X
pick 7c6b236 Update documentation

Dans cet exemple, nous supprimons le commit « Fix bug in feature X » tout en conservant les deux autres.

Étape 3 : enregistrer et quitter

Enregistrez le fichier et fermez l'éditeur. Git traitera vos instructions et appliquera les modifications.

Étape 4 : résoudre les conflits Git

S'il existe des conflits entre les commits après la suppression d'un commit, Git mettra en pause le processus de rebase et vous demandera de les résoudre. Après avoir résolu les conflits :

git add .
git rebase --continue

Étape 5 : forcer le push si nécessaire

Si vous avez déjà poussé les commits que vous avez maintenant annulés, vous devrez forcer le push pour mettre à jour la branche distante :

git push --force-with-lease

AVERTISSEMENT : le push forcé réécrit l'historique sur le référentiel distant, ce qui peut causer des problèmes aux autres développeurs qui ont tiré l'ancien historique. N'utilisez le push forcé que lorsque vous êtes certain qu'il ne perturbera pas le travail des autres.

Techniques avancées de rebase Git pour la gestion des commits

Au-delà de la simple annulation des commits, le rebase interactif offre plusieurs autres options :

Combiner les commits Git

Vous pouvez combiner plusieurs commits en un seul :

pick f2a9770 Add feature X
squash c69a283 Fix bug in feature X
pick 7c6b236 Update documentation

Cela combinera le commit « Fix bug » dans le commit « Add feature ».

Réorganiser les commits Git

Changez simplement l'ordre des lignes dans l'éditeur de rebase :

pick 7c6b236 Update documentation
pick f2a9770 Add feature X

Modifier les commits Git

Utilisez edit au lieu de pick pour mettre en pause le rebase à un commit spécifique :

pick f2a9770 Add feature X
edit c69a283 Fix bug in feature X
pick 7c6b236 Update documentation

Lorsque le rebase atteint ce commit, Git s'arrête et vous permet de modifier le commit avant de continuer.

Risques et meilleures pratiques de Git Rebase

Risques liés à l'utilisation de Git Rebase

  1. Modifications irréversibles : contrairement à merge, rebase réécrit l'historique des commits, ce qui rend difficile la récupération des erreurs.
  2. Push forcé requis : après avoir rebasé les commits poussés, vous devrez forcer le push, ce qui peut écraser les modifications des autres.
  3. Modification du commit : rebase modifie les hachages de commit, ce qui signifie que les commits d'origine sont remplacés par de nouveaux.
  4. Conflits : les rebases complexes peuvent entraîner plusieurs étapes de résolution des conflits.

Meilleures pratiques de Git Rebase

Créer des branches de sauvegarde : avant de tenter des opérations de rebase complexes, créez une branche de sauvegarde.

git branch backup-before-rebase

Rebase uniquement les commits non poussés : en règle générale, évitez de rebaser les commits qui ont été poussés vers un référentiel partagé.

Utiliser -force-with-lease au lieu de -force : cela fournit un contrôle de sécurité pour éviter d'écraser les modifications des autres.

git push --force-with-lease

Pratiquer dans un référentiel Sandbox : si vous débutez avec le rebase, entraînez-vous dans un référentiel de test avant de l'utiliser sur des projets importants.

Rebase uniquement vos propres branches de fonctionnalités : évitez de rebaser les branches sur lesquelles plusieurs développeurs travaillent.

Quand utiliser chaque méthode d'annulation Git

Git Rebase vs. Git Merge : comprendre la différence

Bien que cela ne soit pas directement lié à l'annulation des commits, comprendre la différence entre rebase et merge permet de clarifier pourquoi rebase est puissant pour la manipulation de l'historique :

Cette différence est essentielle pour comprendre pourquoi rebase peut être utilisé pour annuler les commits : il n'ajoute pas simplement de nouveaux commits ; il réécrit l'historique.

Conclusion

La commande Git rebase est un outil puissant pour annuler les commits et maintenir un historique des commits propre et significatif. Bien qu'il nécessite des soins et une attention particulière pour être utilisé correctement, la maîtrise de rebase vous donne un contrôle précis sur votre historique Git.

N'oubliez pas que l'approche la plus sûre dépend de votre situation spécifique :

En comprenant les différentes approches pour annuler les commits Git, vous serez mieux équipé pour gérer les erreurs et maintenir un historique de référentiel propre. Entraînez-vous à ces techniques dans un environnement sûr jusqu'à ce que vous soyez à l'aise pour les appliquer à vos projets réels.

Explore more

Fathom-R1-14B : Modèle de raisonnement IA avancé d'Inde

Fathom-R1-14B : Modèle de raisonnement IA avancé d'Inde

L'IA en expansion rapide. Fathom-R1-14B (14,8 milliards de paramètres) excelle en raisonnement mathématique et général, conçu par Fractal AI Research.

5 June 2025

Mistral Code : L'assistant de codage le plus personnalisable basé sur l'IA pour les entreprises

Mistral Code : L'assistant de codage le plus personnalisable basé sur l'IA pour les entreprises

Découvrez Mistral Code, l'IA d'aide au code la plus personnalisable pour les entreprises.

5 June 2025

Comment Claude Code transforme le codage de l'IA en 2025

Comment Claude Code transforme le codage de l'IA en 2025

Découvrez Claude Code en 2025 : codage IA révolutionné. Fonctionnalités, démo, et pourquoi il gagne du terrain après Windsurf d'Anthropic. Indispensable !

5 June 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API