Git Pull Origin Branch überschreibt Master Branch

John Wachira 15 Februar 2024
Git Pull Origin Branch überschreibt Master Branch

Dieser Artikel veranschaulicht, wie wir Änderungen rückgängig machen können, die am Zweig master vorgenommen wurden, nachdem der Befehl git pull origin <branch> ausgeführt wurde. Angenommen, Sie haben einen master-Zweig und einen feature-Zweig in Ihren lokalen und Remote-Repositories.

Sie ziehen Änderungen aus dem entfernten feature-Zweig in Ihr lokales Repository, stellen aber fest, dass Sie in Ihrem lokalen master-Zweig ausgecheckt sind.

Wie gehen Sie vor, um die Änderungen, die am master-Zweig vorgenommen wurden, rückgängig zu machen und die Änderungen in den feature-Zweig zu ziehen?

Git Pull Origin <Branch> überschreibt Master Branch

Um das Konzept zu verstehen, lassen Sie uns das oben dargestellte Szenario replizieren.

Angenommen, wir haben Änderungen in unserem entfernten feature-Zweig, die nicht im lokalen Repository vorhanden sind, führen wir den Befehl git pull aus, wie unten dargestellt, um die Änderungen in unser lokales Repository zu integrieren.

$ git pull origin feature

git pull origin feature

Beachten Sie, dass wir immer noch in unserem master-Zweig ausgecheckt sind, aber idealerweise möchten wir die Änderungen aus dem entfernten feature-Zweig in den lokalen feature-Zweig bringen. Beachten Sie, dass die obige Aktion alle Commits vom Remote-Zweig zum lokalen master-Zweig bringt und einen Merge-Commit erstellt.

Wie können wir unseren master-Zweig in seinen vorherigen Zustand zurückversetzen und die Änderungen in den lokalen feature-Zweig integrieren?

Wir beginnen damit, den master-Zweig zurückzusetzen. An dieser Stelle verwenden wir den Befehl git reset --hard.

Wir können den Befehl verwenden, um unseren master-Zweig auf zwei Arten zurückzusetzen.

Wir können den Befehl git reset --hard mit dem übergeordneten Commit verwenden. Der übergeordnete Commit ist einfach der Commit, der vor dem Merge-Commit vorhanden war, der aus dem Pull resultierte.

Führen Sie den Befehl git log --oneline aus und notieren Sie sich den SHA-1 des übergeordneten Commits. Denken Sie daran, welche Commits vom Remote-Zweig eingeführt wurden.

Führen Sie den folgenden Befehl aus, um den master-Zweig zurückzusetzen.

$ git reset --hard 11bd00c

Dadurch wird unser master-Zweig auf seinen vorherigen Zustand vor dem Pull zurückgesetzt. Alternativ können Sie die Referenz HEAD verwenden.

In diesem Fall führen wir Folgendes aus:

$ git reset --hard HEAD~1

Der obige Befehl ist die sicherste Option, da die Verwendung des Commit verwirrend sein kann, insbesondere wenn der Pull mehrere Commits einführt. Wir können jetzt zu unserem lokalen feature-Zweig übergehen.

$ git checkout feature

Wir wissen, dass der Befehl git pull die Befehle git fetch und git merge FETCH_HEAD kombiniert. Das bedeutet, dass wir bereits die Änderungen aus dem entfernten feature-Zweig haben, aber sie sind noch nicht in unseren feature-Zweig gemergt.

Wir müssen den Befehl git pull origin feature nicht erneut ausführen. Stattdessen können wir die Änderungen zusammenführen, wie unten dargestellt.

$ git merge FETCH_HEAD

Dadurch wird unser lokaler feature-Zweig aktualisiert, damit er mit dem entfernten feature-Zweig übereinstimmt.

Wenn der Befehl git pull origin <branch> versehentlich Ihren master-Branch aktualisiert, können Sie die Änderungen rückgängig machen und sie wie oben beschrieben in den richtigen Branch verschieben. Die obige Methode gilt für alle Filialen.

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 Pull