Wie kann ich lokale Git-Commits wegwerfen, wenn die Fehlermeldung „Ihr Zweig und ‚Origin/Master‘ sind auseinandergegangen“ angezeigt wird?
Lesezeit: 3 Minuten
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?
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
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 main
git checkout -b main origin/main
14506100cookie-checkWie kann ich lokale Git-Commits wegwerfen, wenn die Fehlermeldung „Ihr Zweig und ‚Origin/Master‘ sind auseinandergegangen“ angezeigt wird?yes