web-dev-qa-db-fra.com

Comment annuler une fusion git avec des conflits

Je suis sur la branche mybranch1. mybranch2 est créé à partir de mybranch1 et des modifications ont été apportées à mybranch2.

Ensuite, alors que je suis sur mybranch1, j’ai fait git merge --no-commit mybranch2 Il montre qu’il ya eu des conflits lors de la fusion.

Maintenant, je veux tout supprimer (la commande merge) afin que mybranch1 redevienne comme avant. Je ne sais pas du tout comment je vais m'y prendre.

713
Anshul

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'il doit restaurer toutes les modifications non validées antérieures à la fusion, bien qu'il ne puisse pas toujours le faire de manière fiable. De manière générale, vous ne devriez de toute façon pas fusionner avec des modifications non validées.

Avant la version 1.7.4:

git reset --merge

Ceci est une syntaxe plus ancienne mais fait la même chose que ci-dessus.

Avant la version 1.6.2:

git reset --hard

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

1247
Daniel Cassidy

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

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

Après une fusion échouée, quand il n’ya pas de MERGE_HEAD, elle peut être annulée avec git reset --merge mais pas nécessairement avec git merge --abort, elles ne sont donc pas uniquement anciennes et nouvelles). pour la même chose.

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

108
Martin G

En supposant que vous utilisez le dernier git,

git merge --abort
102
Adam Dymitruk