Original article: Git Undo Merge – How to Revert the Last Merge Commit in Git
L'utilasation des branches fait partie intégrante de Git car il permet de travailler sans altérer le code figurant déjà en production.
Lorsque vous finissez de travailler sur une branche autre que la branche main
, vous devez la fusionner avec la branche principale afin que la fonctionnalité intégrée ou le bug corrigé soit pris en compte.
Alors que faire si vous finissez de faire un merge et réalisez que vous avez oublié d'ajouter quelque chose? Ou pire, si vous avez accidentellement fusionner avec la branche principale?
Pas de panique! on peut presque tout annuler avec GIT. Dans cet article, je vais vous montrer comment annuler un merge afin de revenir au dernier commit effectué.
Comment annuler un Merge Commit dans Git
On peut utiliser la commande git reset
pour annuler un merge.
Premièrement, vous devez vérifier le hash (ou id) du commit afin de pouvoir l'utiliser pour revenir au commit précédent.
Pour celà, exécutez la commande git log
ou git reflog
. git reflog
est une meilleur option car elle donne un rendu de l'information plus lisible.

Quand vous obtenez le hash du commit vers lequel vous voulez revenir , lancez la commande git reset --hard commit-before-the-merge
:

Vous remarquerez la suppression de certaine du code dans votre IDE après l'exécution de cette commande.
Si vous n'êtes pas sûr du hash de votre dernier commit, vous pouvez lancer la commande git reset --hard HEAD~1
pour revenir au commit avant le merge:

Notez que lorsque vous utilisez l'option --hard
pour annuler un merge, toute modification non intégrée à via un commit sera annulée.
Une meilleure manière pour annuler un Merge avec Git
Puisque la méthode décrite ci-dessus annule les changements non intégrés via un commit. Git propose une option plus fiable qui est --merge
.
Pour annuler un merge avec --merge
, exécutez la commande git reflog
pour voir les hashs des différents commits, puis lancez la commande git reset --merge previous-commit
:

Vous pouvez aussi utiliser le mot clé HEAD avec l'option --merge
en éxécutant git reset --merge HEAD~1
:

N.B.: Si vous n'obtenez aucune réponse de cette commande lorsque vous utilisez l'option --merge
, ne vous inquiétez pas, elle fonctionne.
Conclusion
Dans cet article, vous avez appris comment annuler un merge avec Git, ainsi, vous pouvez annuler un merge erroné ou non souhaité et travailler de façon plus efficiente avec Git.
Voici ce qu'il faut retenir des options --hard
et --merge
. Lorsqu'on les utilise pour annuler une fusion : --hard
supprime les modifications non validées via un commit, tandis que --merge
les conserve.