Eine Git-Zusammenführung mit Konflikten rückgängig machen
Dieser Artikel veranschaulicht das Zurücksetzen des Befehls git merge
, wenn Merge-Konflikte auftreten. Wir werfen auch einen kurzen Blick darauf, wie Sie einen erfolgreichen git merge
rückgängig machen können, der in das Remote-Repository gepusht wurde.
Eine Git-Zusammenführung mit Konflikten rückgängig machen
In diesem Abschnitt verwenden wir ein Beispiel, wie unten beschrieben.
Unser Repository hat die Zweige master
und feature
. Wir werden die Datei README.md
in beiden Zweigen so bearbeiten, dass das Zusammenführen von master
mit feature
zu Konflikten führt.
Nachdem wir den Befehl git merge
ausgeführt haben, sollten wir so etwas bekommen.
Um eine solche Zusammenführung rückgängig zu machen, können wir den Befehl git merge --abort
ausführen, wie unten gezeigt.
$ git merge --abort
Dieser Befehl setzt unser Repository auf seinen vorherigen Zustand vor der Zusammenführung zurück. Es sollte sogar die nicht festgeschriebenen Änderungen wiederherstellen, wenn auch nicht zuverlässig.
Außerdem führen nur Neulinge Zweige mit nicht festgeschriebenen Änderungen zusammen.
Wir können auch den Befehl git reset --merge
verwenden, der dasselbe tut wie der Befehl git merge --abort
.
$ git reset --merge
Ein weiterer praktischer Befehl ist der git reset --hard
. Es beseitigt die Zusammenführung und alle Änderungen, die durch die Zusammenführung an der Arbeitskopie vorgenommen wurden.
Was ist, wenn wir eine erfolgreiche Zusammenführung rückgängig machen möchten?
Zuerst benötigen wir den Commit-Hash für die Zusammenführung. Wir können den Befehl git log --oneline
ausführen, um die Commits in unserem Repository aufzulisten.
Wir kopieren dann den Hash für den Merge-Commit, wie unten gezeigt.
Wir werden den Befehl git reset
mit dem Hash des Commits nach unserem Merge-Commit verwenden. Einfacher ausgedrückt befindet sich der Commit bei HEAD@{1}
.
$ git reset --hard c315395
HEAD is now at c315395 Trial2
Alternativ können wir den Befehl git reset
ausführen, wie unten gezeigt.
$ git reset --hard HEAD~1
Dadurch wird unser Repository um einen Commit zurückgesetzt.
Wie können wir in einem Szenario, in dem wir die Zusammenführung in das Remote-Repository verschoben haben, dasselbe wiederherstellen?
Wenn Sie die Änderungen bereits gepusht haben, müssen Sie einen Commit erstellen, der die Merge-Änderungen rückgängig macht und sie wie unten gezeigt in das Remote-Repository pusht.
$ git revert -m 1 08396d4
Dadurch werden die durch die Zusammenführung eingeführten Änderungen rückgängig gemacht. Wir haben den Befehl git revert
mit dem Commit-Hash unseres Merge-Commits verwendet.
Jetzt können wir die Änderungen auf die Fernbedienung übertragen, um die Zusammenführung rückgängig zu machen.
Kurz gesagt, Git ermöglicht es Ihnen, eine Zusammenführung abzubrechen, wenn Konflikte auftreten. In solchen Szenarien sind die Befehle git reset --merge
und git merge --abort
hilfreich.
Wenn Ihre Zusammenführung erfolgreich war und Sie die Änderungen an die Remote übertragen haben, müssen Sie einen neuen Commit erstellen, der die durch die Zusammenführung eingeführten Änderungen rückgängig macht.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInVerwandter Artikel - Git Reset
- Machen Sie den Development-Branch mit dem Master-Branch identisch
- Unterschied zwischen den Git-Befehlen `Reset`, `Revert` und `Checkout`.
- Unterschied zwischen Git RM --Cached und Git Reset File
- Verschiedene Methoden zum Entfernen lokaler Git-Änderungen
- Änderungen in Git rückgängig machen