Zum Inhalt springen
GitTree
Git-Anleitungen4 Min. gelesen

So machen Sie einen Merge-Commit in Git rückgängig, ohne den Verlauf neu zu schreiben

Ein Merge-Commit hat zwei übergeordnete Elemente, daher muss Git wissen, welche Seite es behalten soll. Hier erfahren Sie, wie Sie das übergeordnete Element auswählen, die Zusammenführung in einem gemeinsam genutzten Zweig sicher rückgängig machen und die Arbeit später wiederherstellen.

Geschrieben von Kodmora

Das Softwarehaus hinter GitTree

Aktualisiert
  • Zusammenführen
  • Rückgängigmachen und Wiederherstellen
  • Commit-Verlauf
Auf dieser Seite

Um ein Zusammenführungs-Commit rückgängig zu machen, führen Sie `git revert -m 1 <merge-commit>` aus. Das -m 1 weist Git an, den ersten übergeordneten Zweig beizubehalten, bei dem es sich um den Zweig handelt, in den Sie zusammengeführt wurden, und alles rückgängig zu machen, was die Zusammenführung mit sich gebracht hat. Git fügt einen neuen Commit hinzu, sodass der Verlauf intakt bleibt und der Fix sicher in einen gemeinsam genutzten Zweig übertragen werden kann.

Wie kann ich einen Merge-Commit rückgängig machen?

Suchen Sie zuerst den Merge-Commit. Die Grafik zeigt es als Commit mit zwei Eltern:

git log --oneline --graph -10

Bestätigen Sie dann die Eltern. Der erste nach dem Commit gedruckte Hash ist Elternteil 1, der zweite ist Elternteil 2:

git log -1 --format="%h parents: %p" <merge-commit>

Setzen Sie es zurück, behalten Sie übergeordnetes 1 bei und pushen Sie das neue Commit wie jedes andere:

git revert -m 1 <merge-commit>
git push

Da nichts neu geschrieben wird, ist kein Zurücksetzen oder Force-Pull erforderlich. Wenn es beim Zurücksetzen zu Konflikten kommt, reparieren Sie die Dateien, stellen Sie sie bereit und führen Sie git revert --continue aus. Zum Zurücksetzen führen Sie git revert --abort aus.

Warum sagt Git: „Commit ist eine Zusammenführung, aber es wurde keine Option -m angegeben“?

Ein normaler Commit hat ein übergeordnetes Element, daher ist sein Unterschied offensichtlich. Ein Merge-Commit hat zwei, daher kann git revert <merge-commit> nicht sagen, zu welcher Seite Sie zurückkehren möchten. Git stoppt mit diesem Fehler und ändert nichts:

error: commit 4f2a9c1 is a merge but no -m option was given.
fatal: revert failed

Fügen Sie -m mit einer übergeordneten Nummer hinzu und führen Sie es erneut aus.

Soll ich -m 1 oder -m 2 verwenden?

Was jede Elternnummer behält
OptionHältVerwenden Sie es wann
-m 1Der Zweig, mit dem Sie zusammengeführt haben, z. B. mainEine Funktion wurde zusammengeführt und sollte entfernt werden. Dies ist der übliche Fall.
-m 2Der Zweig, in den eingegliedert wurdeSie haben main in Ihren Feature-Branch gepullt und möchten entfernen, was aus main stammt.

Wie füge ich denselben Zweig nach einem Zurücksetzen erneut zusammen?

Das ist die Falle. Wie es in der Git-Dokumentation heißt, bedeutet das Rückgängigmachen einer Zusammenführung „, dass Sie niemals die durch die Zusammenführung eingebrachten Baumänderungen wünschen werden“. Die Commits des Zweigs sind immer noch Vorgänger von main, daher bringt ein zweiter git merge nur Commits mit, die nach dem Zurücksetzen vorgenommen wurden.

Um das ursprüngliche Werk wiederherzustellen, machen Sie zuerst die Wiederherstellung rückgängig und führen Sie dann den festen Zweig zusammen:

git revert <revert-commit>
git merge feature/search

Was ist, wenn die Zusammenführung noch nicht gepusht wurde?

Sie können die Zusammenführung verwerfen, anstatt eine Wiederherstellung hinzuzufügen. Git zeichnet den Commit vor der Zusammenführung in ORIG_HEAD auf und --merge weigert sich, nicht verwandte lokale Änderungen zu ändern, die durch das Zurücksetzen überschrieben würden:

git reset --merge ORIG_HEAD

Wenn die Zusammenführung noch läuft und Konflikte auftreten, liegt noch kein Zusammenführungs-Commit vor. Verwenden Sie daher git merge --abort. Lesen Sie wie man ein Zurücksetzen, einen Rebase oder einen Commit rückgängig macht, wenn Sie zu weit gehen, und die Lektion zum Zurücksetzen oder Zurücksetzen im gemeinsamen Verlauf für die Regel hinter dieser Auswahl.

So machen Sie einen Merge-Commit in GitTree rückgängig

  1. Öffnen Sie das Commit-Menü

    Suchen Sie die Zusammenführung im Commit-Diagramm und klicken Sie mit der rechten Maustaste darauf.

  2. Wählen Sie Commit zurücksetzen

    Eine Zusammenführung hat zwei übergeordnete Elemente, daher fragt GitTree, an welchem Element gemessen werden soll: Erstes übergeordnetes Element (der Zweig, mit dem zusammengeführt wird) ist die übliche Wahl, und Zweiter übergeordneter Element (der mit dem Zweig zusammengeführte Zweig) ist das andere.

  3. Überprüfen Sie das Ergebnis

    GitTree sagt Zurückgesetzt. und der neue Commit ist die oberste Zeile Ihres Zweigs. Wenn es zu Konflikten kommt, lösen Sie die Dateien auf und klicken Sie auf Weiter oder Abbrechen…, um zurückzukehren.

Die vollständige Anleitung, einschließlich mehrerer Commits gleichzeitig, finden Sie unter Cherry-Pick and Revert in GitTree.

Das Commit-Menü im GitTree-Diagramm bietet „Revert Commit“ für jeden Commit, einschließlich Merge-Commits.
Das Commit-Menü im GitTree-Diagramm bietet „Revert Commit“ für jeden Commit, einschließlich Merge-Commits.

Häufig gestellte Fragen

Löscht Git Revert das Merge-Commit?

Nein. Die Fusion bleibt in der Geschichte. Git fügt ein neues Commit hinzu, das seine Änderungen rückgängig macht, weshalb es in einem gemeinsam genutzten Zweig sicher ist.

Was bedeutet -m 1 in Git Revert?

Es benennt die übergeordnete Hauptlinie, die beibehalten werden soll. Übergeordnetes Element 1 ist der Zweig, in dem Sie sich befanden, als Sie die Zusammenführung ausgeführt haben. Daher entfernt -m 1 alles, was der andere Zweig eingebracht hat.

Kann ich eine bereits gepushte Zusammenführung rückgängig machen?

Ja, und dafür ist es das richtige Werkzeug. Durch das Zurücksetzen wird ein Commit hinzugefügt, sodass Sie normal pushen und niemand etwas neu schreiben muss.

Warum brachte meine zweite Zusammenführung nichts zurück?

Die Commits des zurückgesetzten Zweigs befinden sich bereits im Verlauf, daher behandelt Git sie als zusammengeführt. Setzen Sie das Revert-Commit zurück und führen Sie es dann erneut zusammen.

Wie mache ich eine laufende Zusammenführung rückgängig?

Führen Sie git merge --abort aus. Dadurch wird die Zusammenführung gestoppt und die Dateien werden in den Zustand zurückversetzt, in dem sie waren, bevor Sie sie gestartet haben.

Quellen

Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 7. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.