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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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
--amendavant de partager - Inverser un commit public avec
revertsans réécrire l’historique
Les 4 scénarios d’annulation
Section intitulée « Les 4 scénarios d’annulation »| Scénario | Commande | Danger |
|---|---|---|
| Retirer un fichier du staging | git restore --staged | Aucun — les fichiers restent modifiés |
| Annuler les modifications d’un fichier | git restore | Perte des modifications non commitées |
| Corriger le dernier commit | git commit --amend | Réécrit l’historique local |
| Inverser un commit publié | git revert | Aucun — 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.
Retirer un fichier du staging
Section intitulée « Retirer un fichier du staging »Vous avez fait git add sur un fichier par erreur. Le fichier est dans
le staging, mais vous ne voulez pas le commiter.
git restore --staged style.cssVérification :
git statusLe 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 :
git restore --staged .Annuler les modifications d’un fichier
Section intitulée « Annuler les modifications d’un fichier »Vous avez modifié un fichier et vous voulez revenir à la version du dernier commit (abandonner vos modifications locales).
git restore style.cssVérification :
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 :
git restore .Restaurer depuis un commit spécifique
Section intitulée « Restaurer depuis un commit spécifique »Vous pouvez restaurer un fichier depuis n’importe quel commit :
git restore --source=a1b2c3d style.cssLe 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.
Corriger le dernier commit
Section intitulée « Corriger le dernier commit »Modifier le message
Section intitulée « Modifier le message »Vous avez fait une faute de frappe dans votre message de commit :
git commit --amend -m "Message corrigé"Ajouter des fichiers oubliés
Section intitulée « Ajouter des fichiers oubliés »Vous avez oublié d’inclure un fichier dans le dernier commit :
-
Ajoutez le fichier oublié au staging
Fenêtre de terminal git add fichier-oublie.css -
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).
Inverser un commit publié avec git revert
Section intitulée « Inverser un commit publié avec git revert »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 :
git revert a1b2c3dGit 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 :
git log --oneline -3Sortie attendue :
f8e7d6c Revert "Message du commit original"a1b2c3d Message du commit original9a8b7c6 Commit précédentLe 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.
Revert sans ouvrir l’éditeur
Section intitulée « Revert sans ouvrir l’éditeur »git revert --no-edit a1b2c3dRevert plusieurs commits
Section intitulée « Revert plusieurs commits »Pour inverser une série de commits :
git revert --no-edit a1b2c3d..e5f6a7bCela crée un commit de revert pour chaque commit de la plage, du plus récent au plus ancien.
Résumé : choisir la bonne commande
Section intitulée « Résumé : choisir la bonne commande »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>Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
git restore ne fait rien | Le fichier n’a pas été modifié | Vérifiez avec git status |
error: could not revert | Conflit lors du revert | Résolvez le conflit, puis git revert --continue |
--amend a modifié le mauvais commit | Vous aviez des commits non poussés entre | git reflog pour retrouver l’ancien SHA, puis git reset --soft SHA |
Modifications perdues après git restore | Comportement normal — les modifications non commitées sont supprimées | Commitez souvent pour éviter les pertes |
git revert HEAD~3..HEAD ne revert pas ce que j’attendais | La syntaxe de plage exclut la borne gauche | Utilisez HEAD~3^..HEAD ou revertissez un par un |
À retenir
Section intitulée « À retenir »git restore --stagedretire un fichier du staging sans le modifiergit restoreremet un fichier à l’état du dernier commit (irréversible)git commit --amendcorrige le dernier commit local (message ou contenu)git revertcrée un commit inverse — sûr pour les commits partagés- Règle d’or :
--amendpour le local,revertpour le partagé - Commitez souvent — c’est la meilleure protection contre les pertes