wake-up-neo.com

Rückgängigmachen eines Git-Merges bei Konflikten

Ich bin am Zweig mybranch1. mybranch2 wurde von mybranch1 gespalten und Änderungen wurden in mybranch2 vorgenommen.

Dann habe ich bei mybranch1git merge --no-commit mybranch2 ausgeführt. Dies zeigt, dass beim Zusammenführen Konflikte aufgetreten sind.

Jetzt möchte ich alles verwerfen (den Befehl merge), damit mybranch1 wieder zu dem zurückkehrt, was es vorher war. Ich habe keine Ahnung, wie ich das anstellen soll.

713
Anshul

Neuester Git:

git merge --abort

Dadurch wird versucht, Ihre Arbeitskopie auf den Zustand vor dem Zusammenführen zurückzusetzen. Das bedeutet, dass nicht festgeschriebene Änderungen vor dem Zusammenführen wiederhergestellt werden sollten, obwohl dies nicht immer zuverlässig möglich ist. Im Allgemeinen sollten Sie nicht mit nicht festgeschriebenen Änderungen zusammengeführt werden.

Vor Version 1.7.4:

git reset --merge

Dies ist eine ältere Syntax, entspricht jedoch der oben beschriebenen.

Vor Version 1.6.2:

git reset --hard

dadurch werden alle nicht festgeschriebenen Änderungen entfernt, einschließlich der nicht festgeschriebenen Zusammenführung. Manchmal ist dieses Verhalten sogar in neueren Versionen von Git nützlich, die die obigen Befehle unterstützen.

1247
Daniel Cassidy

Tatsächlich ist es erwähnenswert, dass git merge --abort nur git reset --merge entspricht, vorausgesetzt, dass MERGE_HEAD vorhanden ist. Dies kann in der Git-Hilfe zum Merge-Befehl nachgelesen werden.

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

Wenn nach einer fehlgeschlagenen Zusammenführung kein MERGE_HEAD vorhanden ist, kann die fehlgeschlagene Zusammenführung mit git reset --merge rückgängig gemacht werden, jedoch nicht unbedingt mit git merge --abort, es handelt sich also nicht nur um alte und neue Syntax für das gleiche.

Persönlich finde ich git reset --merge im Arbeitsalltag viel nützlicher.

108
Martin G

Angenommen, Sie verwenden den neuesten Git,

git merge --abort
102
Adam Dymitruk