Eine Git-Zusammenführung mit Konflikten rückgängig machen

John Wachira 15 Februar 2024
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.

git merge

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.

git log –oneline

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 Wachira avatar John Wachira avatar

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.

LinkedIn

Verwandter Artikel - Git Reset

Verwandter Artikel - Git Merge