978 votes

Comment annuler une fusion git avec conflits ?

Je suis sur la branche mybranch1 . mybranch2 est bifurqué de mybranch1 et des modifications ont été apportées dans mybranch2 .

Ensuite, pendant que vous êtes sur mybranch1 J'ai fait git merge --no-commit mybranch2 Cela montre qu'il y a eu des conflits lors de la fusion.

Maintenant je veux tout jeter (le merge ) de sorte que mybranch1 est revenu à ce qu'il était avant. Je n'ai aucune idée de la manière dont je dois m'y prendre.

1 votes

1670voto

Daniel Cassidy Points 7143

Dernier Git :

git merge --abort

Cela tente de réinitialiser votre copie de travail à l'état dans lequel elle se trouvait avant la fusion. Cela signifie qu'elle devrait restaurer tous les changements non validés avant la fusion, bien qu'elle ne puisse pas toujours le faire de manière fiable. En général, vous ne devriez pas fusionner avec des changements non validés de toute façon.

Avant la version 1.7.4 :

git reset --merge

Il s'agit d'une ancienne syntaxe, mais elle a le même effet que la précédente.

Avant la version 1.6.2 :

git reset --hard

qui supprime toutes les modifications non validées, y compris la fusion non validée. Ce comportement est parfois utile même dans les versions plus récentes de Git qui supportent les commandes ci-dessus.

1 votes

Mais pour les anciennes versions de git, c'est la méthode à utiliser

9 votes

Parfois, vous devez encore utiliser git reset --merge même dans les versions plus récentes. J'ai eu git merge --abort se tromper (ne faire aucun changement) où git reset --merge réussit (et fait la bonne chose) dans git 2.2.1.

1 votes

J'ai découvert que je devais faire git merge --abort suivi par git reset --merge lorsqu'il y a un conflit d'énergie automatique à cause de ma réserve.

160voto

Martin Points 481

En fait, il est intéressant de noter que git merge --abort est seulement équivalent à git reset --merge étant donné que MERGE_HEAD est présent. Ceci peut être lu dans l'aide git pour la commande merge.

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

Après l'échec d'une fusion, lorsqu'il n'y a aucune MERGE_HEAD la fusion échouée peut être annulée avec git reset --merge mais pas nécessairement avec git merge --abort , donc il ne s'agit pas seulement d'une ancienne et d'une nouvelle syntaxe pour la même chose .

Personnellement, je trouve git reset --merge beaucoup plus utile dans le travail quotidien.

2 votes

Merci, cette information a été très utile. J'avais une fusion qui commençait par git stash apply sur une mauvaise branche, et git merge --abort n'a rien fait (pas de MERGE_HEAD ), tandis que git reset --merge a fait l'affaire.

5 votes

J'ai vu environ 10 personnes dire git merge --abort est la nouvelle commande pour git reset --merge et j'ai rencontré le même problème que @geomaster, c'était super utile, merci !

114voto

Adam Dymitruk Points 34999

En supposant que vous utilisez la dernière version de git,

git merge --abort

0 votes

Ok, cela ne fonctionne pas avec la 1.7.0.7 :( . il faut utiliser reset --hard avec elle

68voto

Hanzla Habib Points 1667

Si vous utilisez la dernière version de Git,

git merge --abort

sinon ceci fera le travail dans les anciennes versions de git

git reset --merge

ou

git reset --hard

9voto

Il y a deux choses que vous pouvez faire avant d'annuler la fusion par la commande

git merge --abort

ou

vous pouvez revenir temporairement à l'état de validation précédent par la commande

git checkout 0d1d7fc32

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X