Wie kann ich mein Git-Repository auf einen bestimmten Commit umstellen
Lesezeit: 3 Minuten
michael
In meinem Git-Repository habe ich 5 Commits vorgenommen, wie unten in meinem Git-Protokoll:
commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc
Author: Michael
Date: Fri Feb 4 15:26:38 2011 -0800
commit b688d46f55db1bc304f7f689a065331fc1715079
Author: Michael
Date: Mon Jan 31 10:37:42 2011 -0800
commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda
Author: Michael
Date: Wed Jan 26 13:33:17 2011 -0800
commit 4771e26619b9acba3f059b491c6c6d70115e696c
Author: Michael
Date: Wed Jan 26 11:16:51 2011 -0800
commit 6e559cb951b9bfa14243b925c1972a1bd2586d59
Author: Michael
Date: Fri Jan 21 11:42:27 2011 -0800
Wie kann ich meine vorherigen 4 Commits lokal in einem Branch zurücksetzen? Mit anderen Worten, wie kann ich einen Zweig ohne meine letzten 4 Commits erstellen (vorausgesetzt, ich habe den SHA dieses Commits aus dem Git-Protokoll)?
Artefakt
So erstellen Sie einen neuen Zweig (lokal):
Mit dem Commit-Hash (oder einem Teil davon)
git checkout -b new_branch 6e559cb
oder um 4 Commits von HEAD zurückzugehen
git checkout -b new_branch HEAD~4
Sobald Ihr neuer Branch (lokal) erstellt wurde, möchten Sie diese Änderung möglicherweise auf einem Remote-Zweig mit demselben Namen replizieren: How can I push my changes to a remote branch
Für Verwerfen der letzten drei Commitssiehe Lunaryorns Antwort unten.
Für Verschieben Sie Ihren aktuellen Zweig HEAD zum angegebenen Commit, ohne einen neuen Zweig zu erstellensiehe Arpiagars Antwort unten.
Arpigar
Alle oben genannten Befehle erstellen einen neuen Zweig und der letzte Commit ist der im Befehl angegebene, aber nur für den Fall, dass Sie Ihren aktuellen Zweig möchten HEAD Um zum angegebenen Commit zu wechseln, folgt der Befehl:
git checkout <commit_hash>
Es löst sich und zeigen Sie die HEAD zu einem bestimmten Commit und erspart das Erstellen eines neuen Zweigs, wenn der Benutzer nur den Zweigstatus bis zu diesem bestimmten Commit anzeigen möchte.
Vielleicht möchten Sie dann zum letzten Commit zurückkehren und den abgetrennten HEAD reparieren:
Einen abgelösten Git-Kopf reparieren?
Dies würde den Kopf lösen. Nicht bequem.
– IgorGanapolsky
19. Mai 16 um 19:27 Uhr
auch wenn die <commit_hash> ist in einer anderen Branche, die voraus ist?
– Ciasto piekarz
23. Mai ’18 um 8:35 Uhr
Die verknüpfte Frage sagt nur zu git checkout masterneben ein oder zwei Randfällen, die auf bestimmte Situationen zutreffen können.
– i336_
26. Juni 19 um 10:03 Uhr
Wenn Sie die letzten vier Commits wegwerfen möchten, verwenden Sie:
git reset --hard HEAD^^^^
Alternativ können Sie den Hash eines Commits angeben, auf den Sie zurücksetzen möchten:
git reset --hard 6e559cb
Dies lässt den Verzweigungsschritt aus. Wenn er genau das ausführt, was hier gezeigt wird, verliert er diese Top-Commits dauerhaft.
– Jimmy
9. Februar 11 um 0:19 Uhr
Naja, nicht unbedingt dauerhaft – man könnte den SHA des vorherigen Kopfes per bekommen git reflog und darauf zurücksetzen – aber es würde sie wegwerfen, ja.
– Bernstein
9. Februar 11 um 0:21 Uhr
Wenn die Commits zuerst gepusht und dann zurückgesetzt werden, können sie mit nur einem Pull erneut abgerufen werden.
– Rick Smith
19. März 18 um 5:02 Uhr
Ich würde empfehlen, zuerst zu einem neuen Branch zu wechseln, bevor Sie diesen Befehl ausführen, da dies alle Ihre letzten Änderungen entfernt und Ihren Branch zu einem bestimmten Commit in der Vergangenheit verschiebt
– Mahesh Jamdade
26. November 2020 um 6:55 Uhr
Es löscht Ihre All-Headed-Commits. Ich denke, das Beste ist, bei einem bestimmten Commit einen neuen Zweig zu erstellen.
– Syed Haseeb
1. Juli 21 um 4:09 Uhr
Checken Sie einfach den Commit aus, von dem aus Ihr neuer Branch beginnen soll, und erstellen Sie einen neuen Branch
git checkout -b newbranch 6e559cb95
Wie kann ich meine vorherigen 4 Commits lokal in einem Branch zurücksetzen?
Das heißt, Sie erstellen keinen neuen Zweig und gehen in den getrennten Zustand. Der neue Weg, dies zu tun, ist:
git switch --detach revison
Das habe ich gesucht. checkout ist eine Operation, die zu viele verschiedene Fähigkeiten hat.
– Smiley1000
10. Januar um 10:15 Uhr
Das habe ich gesucht. checkout ist eine Operation, die zu viele verschiedene Fähigkeiten hat.
– Smiley1000
10. Januar um 10:15 Uhr
.
7593400cookie-checkWie kann ich mein Git-Repository auf einen bestimmten Commit umstellenyes