Accéder au contenu principal

Git Undo Last Commit : Guide étape par étape pour les débutants

Ce guide vous apprend à annuler en toute sécurité votre dernier commit Git en utilisant les commandes et les outils appropriés, que vous travailliez seul ou en équipe.
Actualisé 24 juin 2025  · 10 min de lecture

Si vous avez déjà travaillé sur un projet de codage en groupe, vous savez à quel point les choses peuvent rapidement déraper lorsque vous essayez d'annuler une modification. Un faux mouvement et vous risquez d'anéantir votre propre travail ou, pire encore, de casser ce que votre coéquipier vient de pousser.

C'est pourquoi il est si important de comprendre ce que Git offre pour annuler les erreurs, et quand utiliser chaque option. Certaines commandes sont adaptées aux environnements d'équipe, tandis que d'autres sont plus adaptées au nettoyage local ( ), où vous pouvez réécrire l'histoire.

Ce guide vous accompagne tout au long du processus. Vous apprendrez les différentes façons d'annuler les commits, comment elles fonctionnent et laquelle choisir en fonction de la situation.

Comprendre l'historique des livraisons de Git 

Vous avez déjà appuyé sur "Ctrl+S" pour enregistrer une version d'un document et y revenir plus tard ? C'est exactement ce que fait un commit Git, mais pour l'ensemble de votre base de code.

Qu'est-ce qu'un commit dans Git ?

Un commit git est l'instantané de votre projet à un moment précis. Il fige l'état actuel de tous vos fichiers et attribue à cette version un identifiant unique, comme si vous preniez une photo horodatée de votre code. Vous pouvez toujours revenir à ce point si quelque chose se casse plus tard.

Comment cela fonctionne-t-il ? Lorsque vous modifiez un fichier dans votre répertoire, les changements ne sont pas immédiatement stockés. Au lieu de cela, ils existent localement dans votre répertoire de travail actuel. Pour les sauvegarder, ces modifications sont mises à l'essai, puis transférées dans le référentiel. L'historique des livraisons est le journal de toutes les livraisons effectuées sur un dépôt. 

Commissions locales ou distantes

Les commits locaux restent sur votre machine et ne sont pas visibles par vos collègues ou collaborateurs jusqu'à ce que vous décidiez de les partager. Cela signifie que vous avez plus de contrôle sur eux : vous pouvez réécrire l'historique, écraser, supprimer ou réinitialiser sans que cela n'affecte personne d'autre.

Les modifications à distance, en revanche, sont accessibles à tous ceux qui travaillent sur le dépôt. Cela signifie que vous ne devez pas réécrire ou supprimer ces commits. Vous risquez ainsi de perturber vos coéquipiers s'ils utilisent la même branche distante. Vous devez donc être prudent et conscient de ce que vous faites avant de réécrire l'histoire commune. 

Annuler localement le dernier commit Git

Dans Git, HEAD pointe vers le dernier commit dans l'historique de votre projet. Lorsque vous utilisez la commande git reset, vous demandez à Git de déplacer ce pointeur vers un autre commit. 

Voyons comment utiliser git reset pour annuler la dernière livraison dans différents scénarios.

Utilisation de git reset --soft HEAD~1

Il ramène HEAD à un commit mais laisse vos modifications dans la zone d'attente. Vos fichiers sont intacts et tout ce que vous avez engagé est toujours en file d'attente dans la zone de la scène. Utilisez cette option lorsque vous souhaitez annuler la livraison elle-même, mais conserver toutes les modifications préparées et mises en scène.

Utilisation de git reset --mixed HEAD~1

Celui-ci va encore plus loin. Il est également possible d'utiliser pour ramener HEAD à un commit, mais la zone d'attente est supprimée. Vos fichiers se trouvent toujours dans votre répertoire de travail, mais plus rien n'est mis en scène. Il s'agit du mode par défaut de git reset.

Utilisation de git reset --head HEAD~1

Il fait reculer HEAD, nettoie la zone de transit et efface les modifications dans votre répertoire de travail. C'est comme si le dernier commit (et tous les changements qui l'accompagnent) n'avait jamais existé.

Utilisez-le avec précaution : une fois que ces changements ont disparu, il est difficile de les faire réapparaître. N'exécutez donc cette opération que si vous êtes absolument sûr de n'avoir besoin d'aucun élément de la dernière livraison.

Exemple 1 : Annuler le dernier commit localement (safe rework)

Disons que vous venez de faire un commit, mais que vous vous êtes rendu compte que vous aviez oublié de mettre à jour le fichier README.

Scénario :

Vous avez apporté des modifications à main.py, mais vous avez oublié de mettre à jour README.md. Vous voulez modifier le dernier commit sans affecter personne d'autre, et vous n'avez encore rien poussé.

Solution :

Utilisez git reset --soft HEAD~1 pour annuler le commit et conserver vos modifications :

git reset --soft HEAD~1

Maintenant, mettez à jour votre fichier README, ajoutez-le à la scène, et recommencez tout :

git add README.md
git commit -m "Update main.py and README.md"

✅ Pourquoi cela fonctionne : Puisque le commit n'a pas été poussé, vous pouvez réécrire l'histoire locale sans que cela n'affecte personne.

Annulation d'un commit Git poussé

Vous avez donc poussé un commit... et vous le regrettez. Nous sommes tous passés par là. Mais comment l'annuler sans interrompre le travail des membres de votre équipe ? 

Réécriture de l'historique avec git push --force

Normalement, Git ne vous permet de pousser que si votre branche locale a été récemment extraite et mise à jour avec la branche distante. Mais vous pouvez passer outre cette règle en utilisant une commande superpuissante comme push --force. Il écrase tout l'historique distant avec ce qui se trouve dans votre branche locale.

C'est pourquoi --force est puissant mais dangereux. Dans le cadre d'une équipe, il peut supprimer les commits de vos collègues s'ils n'ont pas été transférés dans votre branche locale. Ne l'utilisez que si vous savez exactement ce que vous faites - et idéalement, si vous êtes le seul à travailler sur ce repo.

Outre push --force, il existe également pull --force, une autre commande puissante qui doit être utilisée avec précaution. Learn en parle ici.

Des alternatives plus sûres en utilisant git revert

Si vous souhaitez annuler un commit sans effacer l'historique, git revert est votre meilleur choix. Il ne supprime pas le commit, il en crée un nouveau qui annule les modifications.

Supposons que vous ayez livré un fichier appelé streamlit_app.py, et que vous souhaitiez vous en débarrasser. git revert générera une nouvelle livraison qui supprimera uniquement ce fichier, en laissant le reste de l'historique intact.

Par défaut, git revert cible le commit le plus récent. Cependant, vous pouvez également revenir sur des commits plus anciens en spécifiant leur ID de commit.

Exemple 2 : Annuler un commit poussé en toute sécurité sur une branche partagée

Imaginons que vous ayez introduit une modification de configuration erronée et que vous ayez besoin de l'annuler sans effacer l'historique.

Scénario :

Vous avez poussé un commit qui ajoute une mauvaise ligne dans config.yaml. Votre équipe travaille déjà sur la même branche distante (main), vous ne pouvez donc pas utiliser reset ou force-push.

Solution :

Utilisez git revert pour annuler la livraison en toute sécurité :

git revert <commit-hash>

Cela ouvrira un éditeur de texte pour confirmer le message d'annulation. Enregistrez et fermez l'éditeur pour créer une nouvelle livraison qui annule la précédente.

Si la dernière livraison est celle qui doit être annulée :

git revert HEAD

Apportez ensuite les modifications :

git push origin main

✅ Pourquoi cela fonctionne : git revert ne réécrit pas l'historique - il ajoute un nouveau commit. Il est donc sûr pour les branches partagées et les flux de travail en équipe.

Visualisation et confirmation des changements

Parfois, vous souhaitez simplement voir ce qui s'est passé jusqu'à présent - un peu comme si vous faisiez défiler les versions précédentes pour trouver la modification que vous souhaitez annuler. Git vous donne des outils pour faire exactement cela.

Utiliser git log pour vérifier l'historique des livraisons 

Lancez git log dans votre terminal, et vous obtiendrez une liste complète de tous les commits sur votre branche actuelle. Vous pouvez l'utiliser pour identifier un commit spécifique à annuler ou à modifier. 

Par exemple : git log pourrait ressembler à ce qui suit :

  • e3a1b7f Corrige une coquille dans le README  
  • 4f2c9a1 Ajouter la validation de la connexion  
  • 9d5b3e8 Validation initiale  

Chaque ligne indique un hachage de validation et un message. Si vous souhaitez annuler une modification spécifique, il vous suffit de copier le hash du commit et de l'utiliser avec git revert

Utilisation d'outils ou d'extensions d'interface graphique

Si vous n'êtes pas un développeur ou si vous n'avez jamais travaillé avec le contrôle de version, toutes ces instructions en ligne de commande peuvent vous sembler une langue étrangère. C'est là qu'interviennent les outils d'interface graphique. Ils rendent Git visuel et convivial pour les débutants, afin que vous puissiez vous concentrer sur ce qui est important sans avoir à mémoriser des commandes.

Bureau GitHub 

GitHub Desktop est une application gratuite qui offre une interface simple et claire pour travailler avec vos dépôts GitHub. Une fois installé, vous pouvez l'utiliser pour créer des branches, faire des commits, pousser à distance et gérer votre projet, tout cela en cliquant au lieu de commandes Git.

C'est la solution idéale si vous êtes novice en matière de Git ou si vous souhaitez simplement gérer les changements de manière plus fluide.

Interface utilisateur de GitHub

Interface utilisateur de GitHub. Source de l'image

Sourcetree

Sourcetree est un outil GUI Git gratuit pour Mac et Windows. Il vous permet de gérer visuellement les branches, les commits et les merges sans toucher au terminal. Il est léger, convivial pour les débutants et fonctionne bien avec des plateformes populaires comme GitHub, GitLab et Bitbucket. 

Puisqu'il a été conçu par Atlassian, il est également compatible avec d'autres outils Atlassian tels que Jira, Confluence et Bamboo, ce qui en fait un excellent choix si votre équipe utilise déjà cet écosystème.

Interface utilisateur de Sourcetree

Interface utilisateur de Sourcetree. Source de l'image

GitKraken

GitKraken est une interface graphique Git riche en fonctionnalités qui permet de travailler avec des dépôts de manière fluide et visuelle. Son principal atout est la vue graphique - une chronologie colorée et interactive de l'historique de votre repo qui permet de suivre facilement les branches, les fusions et les commits.

Sur la gauche, vous verrez l'arborescence des fichiers de votre projet. Sur la droite, vous obtiendrez des informations détaillées sur le commit, le fichier ou la branche sur lequel vous cliquez. Il est intuitif, convivial pour les débutants et doté de puissantes fonctionnalités pour les utilisateurs avancés.

GitKraken est gratuit pour une utilisation personnelle, mais si vous travaillez dans une entreprise ou si vous gérez des dépôts privés, vous aurez besoin d'un plan payant.

Interface utilisateur de Gitkraken

Vous pouvez consulter l'interface. Source de l'image.

Meilleures pratiques pour annuler les modifications apportées à Git

L'annulation d'une livraison n'est pas une chose à craindre tant que vous suivez les bonnes pratiques. Voyons de quoi il s'agit.

Utiliser les branches pour l'expérimentation

Chaque fois que vous construisez quelque chose de nouveau ou que vous corrigez un bogue, créez une branche distincte de la branche principale. Faites-y tout votre travail, testez-le minutieusement, et seulement ensuite, fusionnez-le à nouveau dans la branche principale.

Ainsi, les erreurs ou les retours en arrière restent corrigés en toute sécurité dans votre branche, sans perturber le travail du reste de l'équipe.

En cas de doute, utilisez git revert

Imaginons que vous ayez fait quelques modifications sur une branche locale et que vous les ayez accidentellement transférées sur la branche principale. Oups. Vous souhaitez maintenant annuler l'un de ces commits sans perturber l'historique partagé. C'est là que git revert vous sauve la mise.

Exécutez git revert HEAD~1. Cela crée un nouveau commit qui annule les modifications de l'avant-dernier commit (parce que HEAD~1 pointe vers lui). Il ne supprime rien, mais inverse les changements d'une manière propre et traçable.

Une fois que vous avez fait cela, n'oubliez pas d'envoyer le correctif à la télécommande à l'aide de git push origin .

Note : Si les modifications ont déjà été poussées vers une branche partagée, utilisez git revert. Cela permet de conserver l'historique des livraisons et de ne pas perturber vos coéquipiers.

Documentez vos changements

Vous n'avez pas besoin d'ouvrir une page Confluence pour conserver l'historique des versions, car Git le fait déjà pour vous. Le tout est de l'utiliser intelligemment.

Commencez par des messages d'engagement clairs et significatifs. Si vous annulez quelque chose, assurez-vous que le message explique pourquoi vous le faites. 

Notez l'identifiant du commit et un bref résumé de ce qui a été modifié. Cela suffit généralement à remplir l'objectif de la documentation.

Collaborer en équipe 

Lorsque vous utilisez des commandes telles que git reset, rebase, ou commit --amend sur une branche que d'autres utilisent également, vous modifiez l'historique des livraisons. Tous ceux qui ont conservé l'ancienne histoire devront désormais faire face à des conflits. 

Par conséquent, n'utilisez les commandes de réécriture que sur les branches locales ou les branches de fonctionnalités. Si vous devez forcer la main ou réécrire l'histoire commune, faites-en part à votre équipe le plus tôt possible. 

Conclusion 

Git vous offre différentes façons d'annuler vos erreurs, mais savoir quand et comment utiliser chaque outil est ce qui sépare les développeurs confiants de ceux qui ne le sont pas.

Nous avons étudié comment git reset fonctionne dans différents modes, quand utiliser git revert, et pourquoi il est essentiel de choisir le bon outil en fonction de votre situation.

En résumé :

  • Éviter de réécrire l'historique après avoir poussé vers des branches partagées
  • Communiquez à l'avance si vous devez forcer la main
  • Utilisez git revert pour annuler en toute sécurité les commits poussés

Pour les étapes suivantes, découvrez comment revenir sur un commit de fusion ici. Si vous avez assimilé les bases et que vous êtes prêt à aller plus loin, consultez notre cours intermédiaire sur git

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

FAQ

Que fait git reset --soft HEAD~1 ?

Il déplace votre pointeur HEAD d'un commit à l'autre mais laisse toutes les modifications à l'état d'ébauche. C'est la solution idéale lorsque vous souhaitez réviser le contrat sans perdre de travail.

Quand dois-je utiliser git reset --mixed au lieu de --soft ?

Utilisez --mixed lorsque vous souhaitez conserver les modifications apportées à vos fichiers, mais les supprimer de la zone de transit. Il est utile de procéder à des modifications avant de s'engager à nouveau.

Est-il dangereux d'utiliser git push --force ?

Oui, surtout dans un environnement d'équipe. Il réécrit l'historique des livraisons sur la branche distante et peut effacer le travail des coéquipiers s'il n'est pas utilisé avec précaution.

Quelle est la différence entre git revert et git reset ?

git revert ajoute un nouveau commit qui annule les modifications sans toucher à l'historique, tandis que git reset déplace le HEAD et peut modifier l'historique - ce qui est particulièrement risqué s'il est poussé.

Puis-je annuler une livraison sans perdre mes modifications ?

Oui, utilisez git reset --soft pour conserver vos modifications en phase ou --mixed pour les conserver dans votre répertoire de travail.

Quel est le moyen le plus sûr d'annuler un commit dans un repo partagé ?

Utilisez git revert. Il préserve l'historique en créant un nouveau commit qui annule les modifications, évitant ainsi les conflits avec les coéquipiers.

Comment trouver la livraison que je souhaite annuler ?

Utilisez git log pour lister les commits précédents. Copiez le hash du commit de celui sur lequel vous voulez revenir ou réinitialiser.

Les outils d'interface graphique comme GitHub Desktop peuvent-ils revenir sur des commits ?

Oui, les outils d'interface graphique offrent des moyens conviviaux d'annuler les modifications sans avoir à se souvenir de la syntaxe de la ligne de commande. Ils sont idéaux pour les débutants.

Qu'advient-il de l'historique des livraisons après une réinitialisation ?

Avec git reset, le(s) commit(s) sont supprimés de votre historique - sauf s'ils ont été poussés. Dans ce cas, la télécommande conserve un enregistrement à moins que vous ne forciez l'accès.

Est-il possible de modifier un commit après l'avoir poussé ?

Non, pas sans coordination. La modification et le passage en force peuvent perturber le travail commun. Ne le faites que dans des branches isolées ou des projets solos.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana est rédactrice technique indépendante et titulaire d'un diplôme de quatre ans en informatique. Écrire sur divers sujets, notamment la science des données, l'informatique en nuage, le développement, la programmation, la sécurité et bien d'autres encore, est pour elle une évidence. Elle aime la littérature classique et la découverte de nouvelles destinations.

Sujets

Apprenez-en plus sur Git avec ces cours !

Cours

Introduction à Git

2 h
31.8K
Maîtrisez Git, l’outil incontournable pour gérer vos versions et collaborer efficacement sur vos projets logiciels et données.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow