git revert

Instantanés de base

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)
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (1)

Ne pas ouvrir l’éditeur ; garder le message par défaut "Revert …".

RecommandéLe message de revert par défaut convient généralement

Exemple

git revert --no-edit HEAD

Intermédiaire (1)

Appliquer les modifications inverses au répertoire de travail et à la zone de préparation sans committer.

Si nécessaireRegrouper plusieurs reverts en un seul commit

Exemple

git revert -n HEAD HEAD~1

Avancé (1)

Pour un commit de fusion : le numéro du parent (souvent 1) dont le côté est conservé.

Si nécessaireLe seul moyen d’annuler un commit de fusion

Exemple

git revert -m 1 HEAD

Choisir la bonne option

revert face à reset

Deux façons d’annuler des commits

CommandeHistoriqueSûr après un push ?
git revert <commit>Ajoute un commit d’annulationOui
git reset --hard <commit>Retire des commits de la brancheNon — nécessite un push forcé

Exemples

Annuler le dernier commit

git revert HEAD

Crée un commit qui annule HEAD.


Annuler un commit plus ancien

git revert a1b2c3d

Annule 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

1
git log --oneline

Trouver le commit

2
git revert a1b2c3d

Créer le commit d’annulation

3
git push

Le 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

A:

Non. Il ajoute un nouveau commit ; l’original reste dans l’historique.

A:

Oui — cela réapplique la modification d’origine.

A:

git revert --abort.