Comment annuler une validation de fusion dans Git sans réécrire l'historique
Un commit de fusion a deux parents, Git doit donc savoir quel côté conserver. Voici comment choisir le parent, annuler la fusion en toute sécurité sur une branche partagée et reprendre le travail plus tard.
Écrit par Kodmora
L'éditeur de logiciels derrière GitTree
- Fusionner
- Annuler et récupérer
- Historique de validation
Sur cette page
Pour annuler une validation de fusion, exécutez `git revert -m 1 <merge-commit>`. Le -m 1 indique à Git de conserver le premier parent, qui est la branche dans laquelle vous avez fusionné, et d'annuler tout ce que la fusion a apporté. Git ajoute une nouvelle validation, de sorte que l'historique reste intact et que le correctif puisse être transféré en toute sécurité vers une branche partagée.
Comment annuler une validation de fusion ?
Recherchez d'abord le commit de fusion. Le graphique le montre comme un commit avec deux parents :
git log --oneline --graph -10Confirmez ensuite ses parents. Le premier hachage imprimé après la validation est le parent 1, le second est le parent 2 :
git log -1 --format="%h parents: %p" <merge-commit>Rétablissez-le en conservant le parent 1 et poussez le nouveau commit comme n'importe quel autre :
git revert -m 1 <merge-commit>
git pushRien n'est réécrit, donc personne n'a besoin de réinitialiser ou de forcer. Si la restauration est en conflit, corrigez les fichiers, préparez-les et exécutez git revert --continue. Pour revenir en arrière, exécutez git revert --abort.
Pourquoi Git dit-il « commit est une fusion mais aucune option -m n'a été donnée » ?
Un commit normal a un parent, donc sa différence est évidente. Un commit de fusion en a deux, donc git revert <merge-commit> ne peut pas dire de quel côté vous souhaitez revenir. Git s'arrête avec cette erreur et ne change rien :
error: commit 4f2a9c1 is a merge but no -m option was given.
fatal: revert failedAjoutez -m avec un numéro parent et réexécutez-le.
Dois-je utiliser -m 1 ou -m 2 ?
| Options | Garde | Utilisez-le quand |
|---|---|---|
-m 1 | La branche dans laquelle vous avez fusionné, telle que main | Une fonctionnalité a été fusionnée et doit être supprimée. C'est le cas habituel. |
-m 2 | La branche qui a été fusionnée | Vous avez extrait main dans votre branche de fonctionnalités et souhaitez supprimer ce qui provient de main. |
Comment fusionner à nouveau la même branche après un retour ?
C'est le piège. Comme le dit la documentation Git, annuler une fusion « déclare que vous ne souhaiterez jamais les modifications apportées à l'arborescence par la fusion ». Les commits de la branche sont toujours les ancêtres de main, donc un deuxième git merge n'apporte que les commits effectués après le retour.
Pour restaurer le travail d'origine, annulez d'abord le rétablissement, puis fusionnez la branche fixe :
git revert <revert-commit>
git merge feature/searchQue se passe-t-il si la fusion n’est pas encore poussée ?
Vous pouvez supprimer la fusion au lieu d'ajouter un retour. Git enregistre le commit avant la fusion dans ORIG_HEAD, et --merge refuse de toucher aux modifications locales sans rapport que la réinitialisation écraserait :
git reset --merge ORIG_HEADSi la fusion est toujours en cours et présente des conflits, il n'y a pas encore de validation de fusion, utilisez donc git merge --abort. Lisez comment annuler une réinitialisation, un rebase ou une validation si vous allez trop loin, et la leçon sur revenir ou réinitialiser l'historique partagé pour connaître la règle derrière ce choix.
Comment annuler une validation de fusion dans GitTree
Ouvrez le menu du commit
Recherchez la fusion dans le graphique de validation et cliquez dessus avec le bouton droit.
Choisissez Annuler la validation
Une fusion a deux parents, donc GitTree demande lequel mesurer : Le premier parent (la branche fusionnée) est le choix habituel, et le Deuxième parent (la branche fusionnée) est l'autre.
Vérifiez le résultat
GitTree indique Reverted. et le nouveau commit est la ligne supérieure de votre branche. En cas de conflit, résolvez les fichiers et appuyez sur Continuer ou Abandonner… pour revenir en arrière.
Voir cherry-pick and revert in GitTree pour le guide complet, y compris plusieurs commits à la fois.

Questions fréquemment posées
Est-ce que git revert supprime le commit de fusion ?
Non. La fusion reste dans l’histoire. Git ajoute un nouveau commit qui annule ses modifications, c'est pourquoi il est en sécurité sur une branche partagée.
Que signifie -m 1 dans git revert ?
Il nomme le parent principal à conserver. Le parent 1 est la branche sur laquelle vous vous trouviez lorsque vous avez exécuté la fusion, donc -m 1 supprime ce que l'autre branche a apporté.
Puis-je annuler une fusion déjà poussée ?
Oui, et c'est le bon outil pour cela. La restauration ajoute un commit, vous poussez donc normalement et personne n'a besoin de réécrire quoi que ce soit.
Pourquoi ma deuxième fusion n’a-t-elle rien rapporté ?
Les commits de la branche inversée sont déjà dans l'historique, donc Git les traite comme fusionnés. Annulez le commit de restauration, puis fusionnez à nouveau.
Comment annuler une fusion en cours ?
Exécutez git merge --abort. Il arrête la fusion et rétablit les fichiers tels qu'ils étaient avant que vous ne la démarriez.
Sources
Les allégations concernant d'autres produits ont été vérifiées par rapport à leurs pages officielles sur 7 novembre 2026. Les prix et les fonctionnalités changent ; les pages des fournisseurs sont la source de vérité.