Accéder au contenu principal

Annuler la dernière validation Git : Comment annuler en toute sécurité une modification dans Git

Découvrez comment utiliser git revert pour annuler votre dernière validation Git sans réécrire l'historique. Comprenez ses effets, comparez-le avec git reset et gérez les cas particuliers rencontrés dans la pratique.
Actualisé 8 juil. 2025  · 8 min de lecture

Dans le domaine du développement logiciel, les erreurs sont inévitables, mais la manière dont vous les traitez est importante, en particulier au sein d'une équipe.

Lorsque vous travaillez avec Git dans un référentiel partagé, vous ne souhaitez pas simplement annuler une mauvaise validation, vous souhaitez le faire en toute sécurité. C'est pourquoi j'ai rédigé, à partir de mon expérience, un article sur git revert.

Au lieu d'effacer l'historique comme git reset, git revert crée un nouveau commit qui annule les modifications apportées dans un commit précédent. Cette approche préserve l'historique de vos commits.

Si vous découvrez ces concepts, suivez notre cursus Git Fundamentals et apprenez tout ce qu'il faut savoir sur les référentiels et le contrôle de version.

Qu'est-ce que Git Revert et comment fonctionne-t-il ?

Considérez « git revert » comme la manière dont Git vous invite à « annuler cette action en toute sécurité ». Lorsqu'un élément est omis dans une validation (par exemple, un bug, une faute de frappe ou une modification effectuée à la hâte), vous pourriez être tenté de le supprimer. Cependant, dans un référentiel partagé, la suppression de l'historique peut causer plus de problèmes que l'erreur initiale. C'est pourquoi git revert existe. Au lieu de supprimer la validation, il en ajoute une nouvelle qui annule les modifications.

Alors, que fait git revert ?

  • Il ajoute un nouveau commit: Comme je l'ai déjà mentionné, plutôt que de supprimer quoi que ce soit, « git revert » crée un nouveau commit qui annule les modifications spécifiques de celui que vous êtes en train de rétablir. Cela permet de conserver la cohérence de l'historique de votre projet.

  • La modification est immédiatement appliquée.: Comme je ne l'ai pas encore mentionné, dès que vous exécutez la commande « git revert », les modifications annulées apparaissent dans votre répertoire de travail. Vous pourrez ainsi constater la correction en direct.

  • Cela n'interfère pas avec la mise en scène (sauf en cas de conflit):: Autre élément important à connaître : Git gère la restauration en interne. Si tout se passe bien, il n'est pas nécessaire de mettre les fichiers en attente manuellement. Toutefois, si Git ne parvient pas à déterminer comment inverser une opération (par exemple dans le cas de fusions complexes), il vous demandera d'intervenir et de l'aider.

Que se passe-t-il après la restauration d'une validation ?

Vous avez donc exécuté git revert. Que s'est-il passé exactement ? Au lieu de supprimer quoi que ce soit, Git crée un nouveau commit qui annule les modifications apportées à celui que vous avez ciblé. Cette nouvelle validation est ajoutée au début de votre historique existant, ce qui signifie que la validation d'origine reste intacte et entièrement visible. Rien n'est réécrit ni supprimé ; Git ajoute simplement une couche qui dit en substance « Annuler cette action ». Dans le même temps, les modifications apportées au fichier lors de cette inversion sont immédiatement appliquées à votre répertoire de travail. Vous constaterez immédiatement que la correction est effective, comme pour tout autre commit.

L'ensemble de ce processus fait de git revert le moyen le plus sûr de corriger les erreurs qui ont déjà été poussées vers une branche partagée. Tous les membres de l'équipe peuvent voir ce qui a été modifié, ce qui a été annulé et pourquoi, sans confusion ni interruption du travail en cours.

Comparaison entre git revert et git reset

Bien que les commandes « git revert » et « git reset » puissent toutes deux être utilisées pour annuler des commits, elles fonctionnent de manière fondamentalement différente. « git reset » est utile pour les corrections locales et privées. Il vous permet de nettoyer les commits désordonnés et de réinitialiser votre répertoire de travail exactement comme vous le souhaitez. Cependant, il y a une condition : Si vous avez déjà validé votre travail puis utilisé « git reset », vous risquez de perturber le travail de vos collègues en modifiant l'historique des validations partagé.

D'autre part, git revert est spécialement conçu pour les succursales partagées ou publiques. Au lieu de supprimer quoi que ce soit, il crée un nouveau commit qui annule les modifications apportées précédemment. Cela renforce la sécurité dans les projets partagés.

Voici une comparaison côte à côte pour clarifier les choses:

Caractéristique

git réverser

git reset

Action

Ajoute une nouvelle validation qui annule une validation précédente.

Déplace le pointeur de branche et modifie éventuellement les fichiers.

Historique des validations

Conservé, rien n'a été supprimé

Les commits réécrits peuvent être perdus.

Idéal pour

Annulation des modifications sur une branche publique/partagée

Nettoyer les commits locaux avant de pousser

Impact sur les autres

Sécurisé, aucune perturbation pour les collaborateurs

Cela peut entraîner des conflits si l'historique est partagé.

Répertoire de travail

Les modifications sont appliquées immédiatement.

Peut réinitialiser l'état des fichiers (--soft, --mixed, --hard)

Scénario idéal

Annuler une validation incorrecte qui a déjà été transmise

Réécriture de l'historique des commits dans une branche de fonctionnalité locale

Annulation de plusieurs validations

Parfois, il ne s'agit pas seulement d'un seul commit incorrect, mais vous pouvez être amené à annuler toute une série de commits. Heureusement, Git vous permet d'annuler plusieurs commits en une seule commande à l'aide d'une plage de commits.

La syntaxe se présente comme suit :

git revert OLDEST_HASH^..NEWEST_HASH

Cela indique à Git de commencer juste avant le commit le plus ancien (c'est à cela que sert l'^ ) et de revenir en arrière jusqu'au commit le plus récent inclus. Par exemple :

git revert a1b2c3d^..d4e5f6g

Cette commande générera des commits de restauration distincts pour chacun des commits d'origine compris dans cette plage.

Attention,: la restauration simultanée de plusieurs commits peut souvent entraîner des conflits de fusion, en particulier si ces commits ont affecté les mêmes fichiers ou lignes. Git tentera d'annuler chaque commit dans l'ordre, mais votre aide pourrait être requise pour résoudre les conflits de modifications.

Vous pouvez également en savoir plus sur la manière dont Git gère les opérations de retour en arrière, y compris les cas plus complexes tels queles commits de fusion, dans Git Revert Merge Commit : Guide illustré d'exemples.

Gestion des conflits de fusion lors de la restauration

La restauration peut sembler simple jusqu'à ce que Git vous réserve une surprise : un conflit de fusion. Ces messages apparaissent généralement lorsque :

  • Vous êtes en train de revenir sur une validation qui a modifié les mêmes lignes que d'autres validations récentes.
  • Vous annulez une validation de fusion ou un groupe de validations comportant des modifications qui se chevauchent.

Git s'efforce de rétablir les modifications de manière propre, mais en cas d'ambiguïté, il s'arrête et vous demande votre aide.

Voici comment procéder :

git revert HEAD

Et pour vérifier quels fichiers sont en conflit, veuillez utiliser :

git status

Pourrésoudre manuellement les conflits dans votre éditeur de code, recherchez les marqueurs « <<<<<<< », « ======= » et « >>>>>>> ».

Ici, je les marque comme résolus :

git add <resolved-file>

Je poursuis maintenant la restauration :

git revert-- continue

Si vous changez d'avis et souhaitez annuler complètement la restauration :

git revert --abort

Ce flux vous offre un contrôle total. Vous pouvez choisir de poursuivre la restauration ou d'annuler complètement l'opération.

Si vous souhaitez comprendre comment Git conserve les journaux de référence lors d'opérations de ce type, veuillez consulter Git Reflog : Comprendre et utiliser les journaux de référence pour obtenir des conseils sur le dépannage des historiques complexes.

Cas exceptionnels : Annulation des commits de fusion

Annuler une validation normale est simple, mais les validations de fusion sont tout autre chose. En effet, une validation de fusion possède deux parents ou plus, et Git doit savoir quel chemin (ou « ligne principale ») il doit considérer comme base.

Pour annuler une validation de fusion, vous devrez utiliser explicitement le drapeau -m drapeau explicitement.

git revert -m 1 <merge-commit-hash>

Voici ce que fait le drapeau « -m » :

  • -m, signifie « branche principale » et indique à Git quelle validation parent doit être conservée.

  • 1 fait généralement référence au premier parent, généralement la branche sur laquelle vous vous trouviez lorsque la fusion a eu lieu.

  • 2 fait référence au deuxième parent, souvent la branche qui a été fusionnée.

Quand utiliseriez-vous 1 ou 2 ?

  • Veuillez utiliser « -m 1 » si vous souhaitez annuler l'effet des modifications fusionnées tout en conservant le travail effectué dans votre branche principale.

  • Veuillez utiliser « -m 2 » si vous souhaitez supprimer les modifications apportées à la branche principale tout en conservant la fonctionnalité ou le contenu de la branche fusionnée. C'est rare. La restauration d'une validation de fusion est susceptible d'entraîner des conflits et aboutit souvent à une situation complexe, en particulier si des validations ultérieures en dépendent. Si vous n'êtes pas certain, veuillez essayer de revenir en arrière sur une branche de test dans un premier temps.

Meilleures pratiques lors de l'utilisation de git revert

Pour tirer le meilleur parti de l'git revert et éviter les erreurs les plus courantes, veuillez garder à l'esprit les meilleures pratiques suivantes :

  • Vérifiez les hachages de validation avant de revenir en arrière: Veuillez toujours vérifier l'historique de vos commits à l'aide de git log ou git log-- oneline afin de vous assurer que vous ciblez la modification appropriée. Vous pouvez réviser ces commandes dansn Fondements de Git ou garder l'essentiel à portée de main grâce à notre aide-mémoire Git.

  • Personnalisez votre message de validation: Ne vous contentez pas du message « Revert » (Revenir en arrière) par défaut de Git. Ajoutez du contexte, par exemple la raison pour laquelle vous avez annulé la validation, afin d'aider vos collaborateurs (et vous-même à l'avenir) à comprendre la modification.

  • Communiquer lors du retour à des branches partagées: Si vous annulez des modifications sur une branche publique, telle que main ou develop, veuillez en informer votre équipe au préalable. Les réversions affectent tout le monde, et il est préférable de se coordonner. Pour en savoir plus sur les flux de travail collaboratif, veuillez consulter nos cours GitHub Concepts et Intermediate GitHub Concepts.

  • Évitez de revenir en arrière à moins d'être certain de votre décision.: La restauration d'une restauration précédente peut entraîner le rétablissement de modifications non souhaitées ou provoquer des conflits. Si vous devez réappliquer une modification, envisagez d'utiliser git cherry-pick à la place d'.

  • Veuillez utiliser reflog pour récupérer vos données si vous rencontrez des difficultés:: Vous avez commis une erreur au milieu de la restauration ? Utilisez git reflog pour afficher vos actions récentes et récupérer les états d'perdus.

Conclusion

Si vous collaborez dans un cadre professionnel, l'git revert vers le dernier commit à l'aide de git revert HEAD permet de maintenir la transparence tout en réduisant le risque de perte accidentelle de données. Que vous corrigiez une erreur ou que vous supprimiez un bug, la fonction « Revert » permet de garantir la stabilité et la clarté de votre référentiel pour toutes les personnes concernées.

Apprenez les bases de Git dès aujourd'hui

Pour les débutants : Maîtriser le contrôle des versions à l'aide de Git.
Commencez à apprendre gratuitement

Oluseye Jeremiah's photo
Author
Oluseye Jeremiah
LinkedIn

Rédacteur technique spécialisé dans l'IA, la ML et la science des données, rendant les idées complexes claires et accessibles.

Sujets

Apprenez Git avec DataCamp

Cursus

Fondements de GitHub

0 min
Préparez-vous à la certification GitHub Foundations en apprenant les principes fondamentaux de Git et de GitHub : contrôle de version, collaboration et branchement.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow