git revert
Annuler un commit en créant un nouveau commit
La commande 'git revert' annule un commit précédent en ajoutant un nouveau commit qui applique la modification inverse. L’historique n’est pas réécrit — le commit d’origine reste — c’est donc la façon sûre d’annuler des commits déjà poussés et partagés. Un conflit est possible si des commits plus récents ont touché les mêmes lignes ; résolvez-le, puis git revert --continue.
Synopsis
git revert [--[no-]edit] [-n] [-m <parent-number>] <commit>...
git revert (--continue | --skip | --abort | --quit)Options
Choisir la bonne option
revert face à reset
Deux façons d’annuler des commits
| Commande | Historique | Sûr après un push ? |
|---|---|---|
git revert <commit> | Ajoute un commit d’annulation | Oui |
git reset --hard <commit> | Retire des commits de la branche | Non — nécessite un push forcé |
Exemples
Annuler le dernier commit
git revert HEADCrée un commit qui annule HEAD.
Annuler un commit plus ancien
git revert a1b2c3dAnnule ce commit en laissant les suivants.
Annuler une fusion
git revert -m 1 <merge-commit>Annule les modifications apportées par une fusion.
Exemples de workflows
git log --onelineTrouver le commit
git revert a1b2c3dCréer le commit d’annulation
git pushLe partager — pas besoin de forcer
Dépannage
error: commit is a merge but no -m option was given
Cause : Une fusion a deux parents
Utilisez git revert -m 1 <commit>
CONFLIT pendant un revert
Cause : Des commits plus récents ont modifié les mêmes lignes
Corrigez les fichiers, faites git add, puis git revert --continue (ou --abort)
Astuces et pièges
Bonnes pratiques
- ✓Utilisez revert pour les commits partagés ; reset seulement pour les commits locaux.
- ✓Expliquez le pourquoi dans le message du revert.
- ✓Annulez d’abord le plus récent quand vous annulez plusieurs commits.
Erreurs fréquentes
- ✗Utiliser git reset sur des commits poussés au lieu de git revert, et obliger tout le monde à réparer son historique.
- ✗Annuler une fusion sans -m.
- ✗Refusionner une branche annulée et se demander pourquoi ses modifications ne reviennent pas — annulez d’abord le revert.
FAQ
Non. Il ajoute un nouveau commit ; l’original reste dans l’historique.
Oui — cela réapplique la modification d’origine.
git revert --abort.