Wie kann ich lokale Git-Commits wegwerfen, wenn die Fehlermeldung „Ihr Zweig und ‚Origin/Master‘ sind auseinandergegangen“ angezeigt wird?

Lesezeit: 3 Minuten

Richards Benutzeravatar
Richard

Ich habe die folgende Meldung in Git:

# Your branch and 'origin/master' have diverged,
# and have 3 and 8 different commits each, respectively.
#   (use "git pull" to merge the remote branch into yours)

Ich möchte die 3 lokalen Commits wegwerfen und die 8 Remote-Commits am Ursprung/Master abrufen.

(Das Zusammenführen wird zu schwierig sein, ich würde lieber die 3 lokalen Commits erneut durchführen, sobald der Master auf dem neuesten Stand ist.)

Wie kann ich das machen?

Benutzeravatar von SLaks
SLaks

git fetch origin
git reset --hard origin/master

Beachten Sie, dass alle nicht gepushten Commits oder lokalen Änderungen verloren gehen.

  • kannst du tun git reset origin/master ohne --hard damit Änderungen im Arbeitsverzeichnis nicht verloren gehen?

    – Wisbucky

    22. Juni 2016 um 1:38

  • Ich sehe eine ähnliche Meldung, jedoch für einen Nicht-Master-Zweig, wenn ich ihn auf den neuesten Master umbasiere. Was würde ein Pull in diesem Fall bewirken? Soll ich ziehen? Ich möchte, dass mein Commit auf den neuesten Änderungen basiert.

    – Rajeev Ranjan

    18. Februar 2020 um 13:51 Uhr

  • @RajeevRanjan: Pull wird (versuchen) Ihre vorhandenen Änderungen zusammenzuführen. Beim Zurücksetzen werden sie weggeworfen.

    – SLaks

    18. Februar 2020 um 14:52 Uhr

  • Diese beiden Befehle haben sofort funktioniert. Der einzige zusätzliche Punkt ist, dass ich die Änderungen, die ich zuvor vorgenommen habe, anhand der von mir erstellten Sicherung wiederherstellen muss. Beifall!

    – Suresh

    22. Okt. 2021 um 8:36 Uhr

So bewahren Sie Ihre alten Commits in einem temporären Zweig auf, falls Sie sie benötigen:

git branch temp

Wechseln Sie dann zum neuen Master

git fetch origin
git reset --hard origin/master

  • Verzweigt er in diesem Fall also seinen Zweig? Wenn er zum Beispiel in „mydevbranch“ gearbeitet hat, erstellt Branch Temp dadurch einfach eine neue Kopie des Zweigs von „mydevbranch“? So wie Sie es ausdrücken, scheint es eine Vorsichtsmaßnahme zu sein, für den Fall, dass sie jemals benötigt werden. Sie sind in dieser Kopie enthalten.

    – gelandet

    23. April 2014 um 6:43

  • Ja, das ist eine Vorsichtsmaßnahme. Es stellt lediglich sicher, dass die Commits nicht verloren gehen, falls Sie sie in Zukunft benötigen.

    – jdramer

    9. Juni 2014 um 21:34

  • Intuitiv hätte ich gedacht, dass Sie vorher Ihren lokalen Code festschreiben müssten – und das ist das Problem, weil Sie nicht möchten, dass das, was Sie gerade getan haben, in den Upstream gelangt. Ich schätze, man verpflichtet sich lokal und drängt nicht – aber irgendwann müsste es steigen … das ist unerwünscht, nehme ich an. Ein Zweig ist für eine Variation oder ein anderes Feature gedacht, muss aber in einem festgeschriebenen Zustand erfolgen? Oder vielleicht ist es das, was Sie sagen. Vielleicht muss ich mir über das Festschreiben KEINE Sorgen machen – ich dachte nur, dass Branch eine Kopie vom festgeschriebenen Quellursprung nimmt (wodurch lokale Änderungen verloren gehen).

    – gelandet

    11. Mai 2015 um 8:20 Uhr

  • @landed: Ja, Sie würden Ihre lokalen Änderungen nach der Verzweigung festschreiben temp. Wenn Sie später einige dieser Commits wiederherstellen möchten, können Sie sie gezielt auswählen (siehe git help cherry-pick).

    – Cris Luengo

    25. September 2017 um 21:07 Uhr

  • Danke, dann nach dem Git-Reset Hard merge temp hat mein Problem gelöst

    – weiliang

    13. April 2021 um 12:16 Uhr

Versuchen Sie Folgendes, um Ihre lokalen Commits zu zerstören:

git reset --hard HEAD~4

Als Alternative zum Zusammenführen können Sie den Feature-Branch mit den folgenden Befehlen auf den Master-Branch umbasieren:

git checkout feature
git rebase master

Benutzeravatar von Bremsstrahlung
Bremsstrahlung

Um Ihren letzten lokalen Commit zu löschen, verwenden Sie Folgendes:

git reset HEAD^

Dadurch wird der Header wieder in den Zustand vor dem Commit versetzt, und Sie können dies tun git pull vom Meister. Stellen Sie sicher, dass Sie alle Ihre Änderungen an einem anderen Ort (lokal) speichern, bevor Sie sie aus dem Remote-Repository abrufen.

Um konfliktfrei ziehen zu können, verwenden Sie git stashund dann git pull.

Wenn ein Hard-Reset für Sie nicht funktioniert und Sie kein Pull-Merge durchführen möchten, können Sie Ihre lokalen unerwünschten Änderungen verwerfen, indem Sie Ihren lokalen Zweig löschen und den ursprünglichen Zweig erneut herunterladen:

git branch -D <local branch>
git checkout -b <branch name> origin/<branch name>

Benutzen main als Beispiel:

git branch -D main
git checkout -b main origin/main

1450610cookie-checkWie kann ich lokale Git-Commits wegwerfen, wenn die Fehlermeldung „Ihr Zweig und ‚Origin/Master‘ sind auseinandergegangen“ angezeigt wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy