Git Revert
Dernière mise à jour
git revert annule un commit en créant un nouveau commit qui applique l'inverse de ses modifications. Comme il ajoute à l'historique plutôt que de le réécrire, revert est le moyen sûr d'annuler un commit déjà poussé - contrairement à git reset, il ne force pas tous les autres à réconcilier une branche réécrite.
Essayez ces commandes dans le terminal playground - un vrai shell dans votre navigateur, rien à installer.
Syntaxe
| Command | What it does |
|---|---|
git revert HEAD | Annule le commit le plus récent |
git revert <hash> | Annule un commit précis par son hash |
git revert HEAD~2..HEAD | Annule une plage de commits |
git revert -n <hash> | Annule mais ne commite pas encore (indexe seulement) |
git revert -m 1 <merge-hash> | Annule un commit de merge en conservant le parent 1 |
Pendant un revert
Si le revert rencontre un conflit, résolvez-le et continuez.
| Command | What it does |
|---|---|
git revert --continue | Reprend après la résolution des conflits |
git revert --abort | Annule le revert en cours |
git revert --skip | Ignore le commit actuel et continue |
revert vs reset
| Behavior | git revert | git reset |
|---|---|---|
| Réécrit l'historique | Non | Oui |
| Sûr sur les commits poussés | Oui | Non |
| Crée un nouveau commit | Oui | Non |
| Annule un commit au milieu | Oui | Compliqué |
FAQ git revert
Quelle est la différence entre git revert et git reset ?
git revert ajoute un nouveau commit qui annule les modifications d'un commit antérieur, en laissant l'historique intact - sûr pour les commits que vous avez déjà poussés. git reset déplace le pointeur de votre branche en arrière et réécrit l'historique, ce qui convient aux commits locaux mais est dangereux sur les branches partagées. Utilisez revert pour annuler des commits publics et reset pour annuler des commits locaux.Comment annuler un commit déjà poussé ?
Exécutez
git revert <hash> (ou git revert HEAD pour le plus récent), puis poussez le nouveau commit de revert. Comme revert ne réécrit pas l'historique, c'est la bonne façon d'annuler un commit partagé - sans force-push et sans perturbation pour les coéquipiers qui l'ont déjà récupéré.Comment annuler un commit de merge ?
Un commit de merge a deux parents, donc Git doit savoir quelle ligne d'historique conserver. Utilisez
git revert -m 1 <merge-hash>, où -m 1 indique à Git de conserver le premier parent (généralement la branche sur laquelle vous avez fusionné). Annuler un merge défait les modifications fusionnées mais conserve le merge dans l'historique.Puis-je annuler plusieurs commits à la fois ?
Oui. Passez une plage comme
git revert HEAD~2..HEAD pour annuler les deux derniers commits, ou listez plusieurs hashes. Par défaut, Git crée un commit de revert par commit annulé ; ajoutez -n pour indexer toutes les annulations sans commiter, puis créez vous-même un seul commit.Puis-je m'entraîner en ligne ?
Oui. Ouvrez le terminal playground pour exécuter
git revert dans un vrai shell dans votre navigateur - rien à installer. Le cours interactif et gratuit de Git de Coddy explique aussi comment annuler des modifications étape par étape.