Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Annuler des modifications dans Git

8 min de lecture

Ce guide vous apprend à corriger vos erreurs dans Git de manière sûre. Que vous ayez ajouté un fichier par erreur au staging, commité trop vite, ou publié un commit défectueux, Git offre une commande pour chaque situation. Toutes les techniques présentées ici préservent votre historique — vous ne perdrez rien.

Prérequis : comprendre le cycle add/commit et consulter l’historique.

  • Retirer un fichier du staging sans perdre vos modifications
  • Annuler des modifications dans le répertoire de travail avec restore
  • Modifier le dernier commit avec --amend avant de partager
  • Inverser un commit public avec revert sans réécrire l’historique
ScénarioCommandeDanger
Retirer un fichier du staginggit restore --stagedAucun — les fichiers restent modifiés
Annuler les modifications d’un fichiergit restorePerte des modifications non commitées
Corriger le dernier commitgit commit --amendRéécrit l’historique local
Inverser un commit publiégit revertAucun — crée un nouveau commit

Le tableau ci-dessus résume les quatre situations que vous rencontrerez. Les sections suivantes détaillent chacune d’elles.

Vous avez fait git add sur un fichier par erreur. Le fichier est dans le staging, mais vous ne voulez pas le commiter.

Fenêtre de terminal
git restore --staged style.css

Vérification :

Fenêtre de terminal
git status

Le fichier passe de “Changes to be committed” à “Changes not staged for commit”. Les modifications dans le fichier ne sont pas perdues — elles restent dans votre répertoire de travail.

Pour retirer tous les fichiers du staging :

Fenêtre de terminal
git restore --staged .

Vous avez modifié un fichier et vous voulez revenir à la version du dernier commit (abandonner vos modifications locales).

Fenêtre de terminal
git restore style.css

Vérification :

Fenêtre de terminal
git diff style.css
# (aucune sortie = le fichier est identique au dernier commit)

Le fichier revient exactement à l’état du dernier commit. C’est l’équivalent d’un “annuler tout” pour ce fichier.

Pour restaurer tous les fichiers modifiés :

Fenêtre de terminal
git restore .

Vous pouvez restaurer un fichier depuis n’importe quel commit :

Fenêtre de terminal
git restore --source=a1b2c3d style.css

Le fichier est restauré avec le contenu qu’il avait dans le commit a1b2c3d. La modification est placée dans votre répertoire de travail, prête à être commitée.

Vous avez fait une faute de frappe dans votre message de commit :

Fenêtre de terminal
git commit --amend -m "Message corrigé"

Vous avez oublié d’inclure un fichier dans le dernier commit :

  1. Ajoutez le fichier oublié au staging

    Fenêtre de terminal
    git add fichier-oublie.css
  2. Corrigez le commit en conservant le même message

    Fenêtre de terminal
    git commit --amend --no-edit

Le résultat est un seul commit contenant toutes les modifications. L’ancien commit est remplacé par le nouveau (SHA différent).

Quand un commit a déjà été poussé et partagé avec d’autres développeurs, on ne réécrit pas l’historique. On crée un nouveau commit qui annule les modifications du commit fautif :

Fenêtre de terminal
git revert a1b2c3d

Git ouvre l’éditeur pour le message. Le message par défaut est Revert "Message du commit original". Vous pouvez le modifier si besoin, puis sauvegarder.

Vérification :

Fenêtre de terminal
git log --oneline -3

Sortie attendue :

f8e7d6c Revert "Message du commit original"
a1b2c3d Message du commit original
9a8b7c6 Commit précédent

Le commit a1b2c3d est toujours dans l’historique — git revert ne l’efface pas. Il crée un nouveau commit (f8e7d6c) qui applique les modifications inverses.

Fenêtre de terminal
git revert --no-edit a1b2c3d

Pour inverser une série de commits :

Fenêtre de terminal
git revert --no-edit a1b2c3d..e5f6a7b

Cela crée un commit de revert pour chaque commit de la plage, du plus récent au plus ancien.

J'ai fait git add par erreur ?
└─→ git restore --staged <fichier>
Je veux abandonner mes modifications locales ?
└─→ git restore <fichier> ⚠️ IRRÉVERSIBLE
Mon dernier commit a un problème ? (pas encore poussé)
└─→ git commit --amend
Mon commit est déjà poussé/partagé ?
└─→ git revert <SHA>
SymptômeCause probableSolution
git restore ne fait rienLe fichier n’a pas été modifiéVérifiez avec git status
error: could not revertConflit lors du revertRésolvez le conflit, puis git revert --continue
--amend a modifié le mauvais commitVous aviez des commits non poussés entregit reflog pour retrouver l’ancien SHA, puis git reset --soft SHA
Modifications perdues après git restoreComportement normal — les modifications non commitées sont suppriméesCommitez souvent pour éviter les pertes
git revert HEAD~3..HEAD ne revert pas ce que j’attendaisLa syntaxe de plage exclut la borne gaucheUtilisez HEAD~3^..HEAD ou revertissez un par un
  • git restore --staged retire un fichier du staging sans le modifier
  • git restore remet un fichier à l’état du dernier commit (irréversible)
  • git commit --amend corrige le dernier commit local (message ou contenu)
  • git revert crée un commit inverse — sûr pour les commits partagés
  • Règle d’or : --amend pour le local, revert pour le partagé
  • Commitez souvent — c’est la meilleure protection contre les pertes

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn