web-dev-qa-db-fra.com

Abandonner une fusion

Je travaille sur un projet utilisant Git en tant que VCS. J'ai une branche xyz coupée de la branche principale du maître. Après avoir travaillé pendant un certain temps, j'ai validé mon code et tiré de la ligne principale de la succursale.

La traction était bien. J'ai ensuite fusionné le code avec le maître. Après la fusion, il y avait des problèmes dans certains fichiers. Je n'ai pas validé le code après la fusion. Quelqu'un peut-il s’il vous plaît indiquer comment je peux annuler cette fusion et ramener ma succursale où je travaille actuellement dans l’état où elle se trouvait avant de la fusionner?

61
Salman Kazmi

tant que vous n'avez pas commis, vous pouvez taper

git merge --abort

tout comme la ligne de commande suggéré.

181
Timothy Truckle

Si vous faites un "statut de git" tout en ayant un conflit de fusion, la première chose que git vous montre est la procédure à suivre pour annuler la fusion.

output of git status while having a merge conflict

16
MLY

À vrai dire, il existe de très nombreuses ressources expliquant comment le faire déjà sur le Web:

Git: comment inverser la fusion d'un commit?

Git: comment inverser la fusion d'un commit?

https://git-scm.com/blog/2010/03/02/undoing-merges.html

Donc, je suppose que je vais simplement résumer certaines de celles-ci:

  1. git revert <merge commit hash>
    Ceci crée un engagement supplémentaire "annuler" en disant que vous avez annulé une fusion.

  2. git reset --hard <commit hash *before* the merge>
    Cette réinitialiser l’historique avant la fusion. Si vous avez des validations après la fusion, vous devrez les cherry-pick ensuite.

Mais honnêtement ce guide ici est meilleur que tout ce que je peux expliquer, avec des diagrammes! :)

6
denis.lobanov