Annuler un commit Git : reset, revert et restore
Tu as fait un commit trop vite ? Pousse un bug ? Pas de panique. Git offre plusieurs manieres d'annuler. Cette page t'explique laquelle utiliser selon ta situation.
gitquest — enquête
# Mission : Le commit fantôme
$git log --oneline
a1b2c3d Premier commit
??? Un commit a disparu...
$git reflog
e4f5g6h HEAD@{1}: commit: fichier secret
$git checkout e4f5g6h
Bravo ! Commit retrouvé. +50 XP
Quelle commande utiliser ?
Modifications non commitees
git restore
Tu as modifie des fichiers mais pas encore commit. Tu veux revenir a la version precedente.
git restore <fichier>Commit local (pas pushe)
git reset
Tu as commit mais pas encore pousse. Tu veux annuler le commit (avec ou sans les modifications).
git reset --soft HEAD~1Commit deja pushe
git revert
Le commit est deja partage. Tu veux l'annuler proprement sans reecrire l'historique.
git revert <hash>Les 3 methodes en action
Chaque methode illustree avec un exemple concret dans le terminal.
git reset --soft
gitquest — reset
# Annuler le dernier commit en gardant les modifications
$git log --oneline -3
a1b2c3d (HEAD -> main) Commit trop rapide
f4e5d6c Ajout du fichier config
b7c8d9e Commit initial
$git reset --soft HEAD~1
HEAD est maintenant a f4e5d6c
$git status
Modifications a valider : tes fichiers sont en staging
git revert
gitquest — revert
# Annuler un commit en creant un commit inverse (sur)
$git log --oneline -3
a1b2c3d (HEAD -> main) Ajout fonction buggee
f4e5d6c Ajout du fichier config
$git revert a1b2c3d
[main c3d4e5f] Revert "Ajout fonction buggee"
Le commit est annule sans modifier l'historique !
git restore
gitquest — restore
# Annuler des modifications non commitees
$git status
Modifications non stagees :
modifie : index.html
$git restore index.html
Le fichier est revenu a sa derniere version commitee
# Retirer un fichier du staging (sans perdre les modifs)
$git restore --staged style.css
Le fichier est retire du staging mais les modifs sont conservees
Comparaison : reset vs revert vs restore
| Critere | git reset | git revert | git restore |
|---|---|---|---|
| Agit sur | Commits | Commits | Fichiers |
| Reecrit l'historique | Oui | Non | Non |
| Sur pour branche partagee | Non | Oui | Oui |
| Garde les modifications | Selon le mode (--soft/--hard) | Cree un nouveau commit | Annule les modifications |
| Cas d'usage | Commit local a corriger | Commit pousse a annuler | Fichier modifie a restaurer |
A
GitQuest est conçu par Anaïs, développeuse web et responsable pédagogique, spécialisée en formations tech et accessibilité numérique.
Questions sur l'annulation de commits
Apprends a annuler sans paniquer
GitQuest t'entraine a maitriser reset, revert et restore dans des situations realistes.
S'entrainer maintenant