Manchmal schaue ich mir eine frühere Version des Codes an, um sie zu untersuchen oder zu testen. Ich habe Anweisungen gesehen, was zu tun ist, wenn ich frühere Commits ändern möchte – aber angenommen, ich nehme keine Änderungen vor. Nachdem ich z git checkout HEAD^
wie komme ich zurück zur Astspitze?.. git log
zeigt mir nicht mehr den SHA des letzten Commits an.
Wie komme ich zurück zum letzten Commit, nachdem ich einen vorherigen Commit ausgecheckt habe?
Leo Alexejew
Phil Müller
Wenn Sie wissen, dass der Commit, zu dem Sie zurückkehren möchten, der Kopf eines Zweigs ist oder getaggt ist, können Sie dies einfach tun
git checkout branchname
Sie können auch verwenden git reflog
um zu sehen, auf welche anderen Commits Ihr HEAD (oder irgendein anderer Ref) in der Vergangenheit gezeigt hat.
Bearbeitet, um hinzuzufügen:
In neueren Versionen von Git, wenn Sie nur liefen git checkout
oder etwas anderes, um Ihr zu bewegen HEAD
einmal können Sie auch tun
git checkout -
zurück zu wechseln, wo es vor der letzten Kasse war. Dies wurde durch die Analogie zum Shell-Idiom motiviert cd -
um zu dem Arbeitsverzeichnis zurückzukehren, in dem man sich zuvor befand.
-
Ich möchte erwähnen, dass das typische Beispiel “git checkout master” wäre. Eine der Schwierigkeiten, die ich beim Erlernen der Verwendung von Git hatte, bestand darin, nicht zu wissen, welche spezifischen Schlüsselwörter (z. B. “master”) ich tatsächlich durch Platzhalterwörter wie “branchname” ersetzen kann.
– AbePralle
2. Februar 2012 um 7:19 Uhr
-
master
ist übrigens nicht wirklich irgendein StichwortHEAD
ist. Es ist nur der Standard-Zweigname in einem neuen Repository. Du kannst rennengit branch
um eine Liste der Zweige in Ihrem Repository zu erhalten, undgit tag -l
für eine Liste von Tags. Ähnlich,origin
ist der Standardname der Fernbedienung, von der ein Repository geklont wird, aber daran ist nichts Besonderes.– Phil Müller
3. Februar 2012 um 21:54 Uhr
-
Wenn es nicht klar war,
git reflog
gibt Ihnen eine Liste von Hashes, an welcher Stelle Sie verwenden könnengit checkout [commit-hash]
.– jbnunn
30. Januar 2014 um 23:42 Uhr
-
Ich habe eine Datei gelöscht und den Befehl ausprobiert, aber er setzt sie nicht vollständig zurück. Erstens ist es nicht rekursiv. Wenn ich das dann mit der Datei versuche, die ich gelöscht habe, sagt mir git danach, dass HEAD getrennt ist. Was ist zu tun?
– Daniel S.
13. Mai 2014 um 12:58 Uhr
-
@DanielS.: Die Frage und meine Antwort waren ungefähr begeht, während Sie über Dateien sprechen. Git behandelt sie etwas anders.
– Phil Müller
17. Mai 2014 um 17:33 Uhr
git Checkout-Master
Master ist der Tipp oder der letzte Commit. gitk zeigt Ihnen nur bis zu der Stelle an, an der Sie sich gerade im Baum befinden. Git-Relog zeigt alle Commits an, aber in diesem Fall wollen Sie nur den Tipp, also git checkout master.
-
Dies. Oder
git checkout branchname
– Alex von Jitbit
17. Januar 2020 um 12:27 Uhr
816-8055
Bin gerade auf diese Frage gestoßen und habe etwas hinzuzufügen
So gehen Sie zum letzten Commit:
git checkout $(git log --branches -1 --pretty=format:"%H")
Erläuterung:
git log --branches
zeigt das Protokoll der Commits aus allen lokalen Branches
-1
Begrenzung auf einen Commit → aktuellster Commit
--pretty=format:"%H"
Format, um nur den Commit-Hash anzuzeigen
git checkout $(...)
Verwenden Sie die Ausgabe der Subshell als Argument für den Checkout
Notiz:
Dies führt jedoch zu einem abgetrennten Kopf (da wir direkt zum Commit auschecken). Dies kann vermieden werden, indem der Zweigname mit extrahiert wird sed
weiter unten erklärt.
So gehen Sie zum Branch des letzten Commits:
git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')
Erläuterung:
git log --branches
zeigt das Protokoll der Commits aus allen lokalen Branches
-1
Begrenzung auf einen Commit → aktuellster Commit
--pretty=format:"%D"
Format, um nur Ref-Namen anzuzeigen
| sed 's/.*, //g'
Ignorieren Sie alle bis auf die letzte von mehreren Refs
git checkout $(...)
Verwenden Sie die Ausgabe der Subshell als Argument für den Checkout
*) HEAD- und entfernte Zweige werden zuerst aufgelistet, lokale Zweige werden in alphabetisch absteigender Reihenfolge zuletzt aufgelistet, sodass der verbleibende Zweig der alphabetisch erste Zweigname ist
Notiz:
Dies wird immer nur den (alphabetisch) ersten Zweignamen verwenden, wenn es mehrere für diesen Commit gibt.
git log --branches -1 --pretty=format:'%D'
Wie auch immer, ich denke, die beste Lösung wäre, einfach die Ref-Namen für den neuesten Commit anzuzeigen, um zu wissen, wo man auschecken muss: git top
Erstellen Sie zB den Alias
-
für diesen Befehl.
Irgendwie habe ich den zweiten Befehl vermasselt … Behoben, er checkt Sie jetzt korrekt aus dem Zweig des letzten Commits aus.
– 816-8055
-
29. Januar 2019 um 14:53 Uhr
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Bash/zsh-Alias für den Befehl, zum Kopf zurückzukehren
– Hallo Engel
4. Februar 2019 um 11:14 Uhr
Tanaszius gitk
Schauen Sie sich die grafische GUI an …
es zeigt alle Commits. Manchmal ist es einfacher, grafisch zu arbeiten … ^^
Hitzkopf1000
git checkout master
git checkout branchname
Sie können dafür einen der folgenden Git-Befehle verwenden:
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>
Atif Majeed
alle Branches anzeigen und committen
git log –branches –oneline
letzten Commit anzeigen
git log –branches -1 –oneline
Show vor dem letzten Commit
-
git log –branches -2 –oneline
Wird der erste Befehl tatsächlich übergeben, welcher Code gerade bereitgestellt wird, oder verstehe ich das falsch?
– Lazerbeak12345
Hinsichtlich der
git log
Satz Ihrer Frage, können Sie immer ausführengit log --all
(oder sinnvollergit log --oneline --graph --all
).– Platzhalter
17. März 2016 um 9:56 Uhr
Wenn Sie den Kommentar von @Wildcard erweitern, können Sie daraus einen wunderbaren Alias erstellen
git log
Befehl: git adog– andschar
15. September 2021 um 7:45 Uhr