Brechen Sie eine Git-Zusammenführung ab

119

Ich arbeite an einem Projekt mit Git als VCS. Ich habe einen Zweig xyzaus dem Hauptzweig des Meisters herausgeschnitten. Nachdem ich eine Weile gearbeitet hatte, legte ich meinen Code fest und zog an der Hauptleitung der Zweigstelle.

Der Zug war in Ordnung. Ich habe dann den Code mit master zusammengeführt. Nach dem Zusammenführen traten in bestimmten Dateien Probleme auf. Ich habe den Code nach dem Zusammenführen nicht festgeschrieben. Kann mir bitte jemand eine Anleitung geben, wie ich diese Zusammenführung abbrechen und meine Niederlassung, in der ich gerade arbeite, in den Zustand bringen kann, in dem sie sich vor der Zusammenführung befand?

Salman Kazmi
quelle
Können Sie nicht einfach das vorherige Commit des Zweigs wiederherstellen?
Wutipong Wongsakuldej
1
Beachten Sie, dass in Git revertder Name eines Befehls ist, der ein neues Commit erstellt , das die Änderungen in einem vorherigen Commit zurücksetzt. Dies ist also wahrscheinlich nicht das Wort, nach dem Sie hier suchen. Ich habe Ihre Frage zur Klärung bearbeitet .
Scott Weldon

Antworten:

295

Solange Sie nicht festgeschrieben haben, können Sie eingeben

git merge --abort

so wie es die Kommandozeile vorschlug.

Timothy Truckle
quelle
4
Ich habe diese Nachricht erhalten, als ich dies versuchte: error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
SMBiggs
1
@Ahmad git startet keine Zusammenführung mit nicht festgeschriebenen Änderungen (bereits verfolgter Dateien). Git kann nicht schützen, was es nicht weiß.
Timothy Truckle
Ja, du bist es. Ich habe es gelernt, indem ich meinen Code verloren habe. Hier ist ein Detail meines Problems, wie ich in ein Problem geraten bin. stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ahmad
23

Wenn Sie während eines Zusammenführungskonflikts "Git-Status" ausführen, zeigt Ihnen Git als Erstes, wie Sie die Zusammenführung abbrechen können.

Ausgabe des Git-Status während eines Zusammenführungskonflikts

MLY
quelle
Schön, dies schlug mir vor, git reset HEAD <file>die effektiv zusammenlegbare "Zusammenführung" aus der Quellcodeverwaltung der Git-Erweiterung zu entfernen => dann könnte ich entweder die Konflikte lösen oder einfach meine Änderungen in der GIT-Erweiterungsliste
zurücksetzen
6

Um ehrlich zu sein, es gibt viele, viele Ressourcen, die erklären, wie dies bereits im Internet gemacht wird:

Git: Wie kann man ein Commit rückgängig machen?

Git: Wie kann man ein Commit rückgängig machen?

Rückgängigmachen von Zusammenführungen aus Gits Blog (abgerufen von der Wayback-Maschine von archive.org)

Ich denke, ich werde nur einige davon zusammenfassen:

  1. git revert <merge commit hash>
    Dadurch wird ein zusätzliches "Zurücksetzen" -Commit erstellt, das besagt, dass Sie eine Zusammenführung aufgehoben haben

  2. git reset --hard <commit hash *before* the merge>
    Dieser Reset-Verlauf wurde vor dem Zusammenführen ausgeführt. Wenn Sie nach dem Zusammenführen Commits haben, müssen Sie cherry-pickdiese anschließend weiterleiten.

Aber ehrlich gesagt ist dieser Leitfaden hier besser als alles, was ich mit Diagrammen erklären kann! :) :)

denis.lobanov
quelle
1
Der Link ist weg. Seufzer.
SMBiggs
@ScottBiggs Ich denke, sie haben es auf git-scm.com/book/en/v2/… verschoben . Denis, wenn du das liest, kannst du das überprüfen? Und wenn es wirklich dasselbe ist, können Sie bitte den Link in Ihrer Antwort aktualisieren? Danke dir!
Fabio sagt Reinstate Monica