Git : Annuler un commit
Dernière mise à jour
La façon d'annuler un commit dépend du commit visé et du fait qu'il ait été poussé ou non. Un commit ancien enfoui dans votre historique - ou tout ce qui est déjà partagé - appelle git revert, qui ajoute un nouveau commit l'inversant sans rien réécrire. Une série de commits locaux récents peut simplement être effacée avec git reset. Si vous avez seulement besoin d'annuler le commit le plus récent, la page git annuler le dernier commit couvre toutes les variantes de cette solution rapide.
Essayez ces commandes dans le terminal playground : un vrai shell dans votre navigateur, rien à installer.
Quelle commande utiliser
| Situation | Command |
|---|---|
| Annuler un commit ancien, garder tout ce qui suit | git revert <hash> |
| Annuler un commit déjà poussé | git revert <hash> |
| Annuler les 3 derniers commits locaux, garder le travail | git reset --soft HEAD~3 |
| Annuler les 3 derniers commits locaux, supprimer le travail | git reset --hard HEAD~3 |
| Annuler une plage avec de nouveaux commits inverses | git revert HEAD~3..HEAD |
reset vs revert
| Behavior | git reset | git revert |
|---|---|---|
| Réécrit l'historique | Oui | Non |
| Sûr sur les commits poussés | Non | Oui |
| Crée un nouveau commit | Non | Oui |
| Fonctionne sur d'anciens commits au milieu de l'historique | Non | Oui |
| Peut supprimer les modifications | Oui (--hard) | Non |
Exemple concret
Annulez un commit ancien précis - même déjà poussé - sans toucher aux commits qui l'ont suivi.
| Step | Command | Result |
|---|---|---|
| 1 | git log --oneline | Trouvez le hash du mauvais commit (par ex. a1b2c3d) |
| 2 | git revert a1b2c3d | Un nouveau commit l'inverse ; les commits suivants restent intacts |
| 3 | git push | Partagez le correctif - aucun historique n'a été réécrit |
FAQ : annuler un commit avec Git
Comment annuler un commit ancien sans perdre les commits qui le suivent ?
git revert <hash>. Revert crée un nouveau commit qui inverse uniquement celui que vous nommez : chaque commit postérieur reste exactement tel quel. Trouvez d'abord le hash avec git log --oneline. Si le revert entre en conflit avec des changements ultérieurs, Git s'interrompt pour vous laisser résoudre, puis git revert --continue.Comment annuler plusieurs commits à la fois ?
git reset --soft HEAD~3 retire les trois derniers tout en gardant leurs modifications indexées (utilisez --hard pour les supprimer). Pour des commits poussés, annulez plutôt la plage : git revert --no-commit HEAD~3..HEAD inverse les trois, puis un seul git commit enregistre l'annulation.Comment annuler un commit que j'ai déjà poussé ?
git revert <hash> plutôt que reset. Revert crée un nouveau commit qui annule les modifications du commit ciblé, en laissant l'historique intact. C'est la façon sûre d'annuler des commits partagés : réécrire l'historique poussé avec reset oblige tout le monde à réconcilier ses copies.