Manchmal überprüfe ich eine frühere Version des Codes, um sie zu untersuchen oder zu testen. Ich habe Anweisungen gesehen, was zu tun ist, wenn ich frühere Commits ändern möchte - aber ich nehme an, ich nehme keine Änderungen vor. Nachdem ich zB fertig bin git checkout HEAD^
, wie komme ich zurück zur Spitze des Zweigs? .. git log
zeigt mir nicht mehr die SHA des letzten Commits.
git
version-control
Leo Alekseyev
quelle
quelle
git log
Satz Ihrer Frage können Sie immergit log --all
(oder nützlichergit log --oneline --graph --all
) laufen .Antworten:
Wenn Sie wissen, dass das Commit, zu dem Sie zurückkehren möchten, der Leiter eines Zweigs ist oder mit einem Tag versehen ist, können Sie dies einfach tun
Sie können auch verwenden, um
git reflog
zu sehen, auf welche anderen Commits Ihr HEAD (oder ein anderer Ref) in der Vergangenheit hingewiesen hat.Bearbeitet, um hinzuzufügen:
In neueren Versionen von Git können Sie dies auch tun , wenn Sie nur ausgeführt haben
git checkout
oder etwas anderes, um IhreHEAD
einmal zu verschiebenum dorthin zurückzukehren, wo es vor der letzten Kasse war. Dies wurde durch die Analogie zur Shell-Sprache motiviert, zu dem
cd -
Arbeitsverzeichnis zurückzukehren, in dem man sich zuvor befand.quelle
master
ist eigentlich kein Schlüsselwort, so wie esHEAD
ist. Dies ist nur der Standardzweigname in einem neuen Repository. Sie könnengit branch
eine Liste der Zweige in Ihrem Repository undgit tag -l
eine Liste der Tags abrufen. Ebensoorigin
ist der Standardname der Fernbedienung, von der ein Repository geklont wird, aber es gibt nichts Besonderes.git reflog
Sie eine Liste mit Hashes, die Sie verwenden könnengit checkout [commit-hash]
.Git Checkout Master
Master ist der Tipp oder das letzte Commit. gitk zeigt Ihnen nur an, wo Sie sich gerade im Baum befinden. git reflog zeigt alle Commits an, aber in diesem Fall möchten Sie nur den Tipp, also git checkout master.
quelle
git checkout branchname
Kam gerade über diese Frage und habe etwas hinzuzufügen
So gehen Sie zum letzten Commit:
Erläuterung:
git log --branches
Zeigt das Protokoll der Festschreibungen aller lokalen Zweige an und-1
beschränkt sich auf ein Festschreiben. → Das neueste Festschreibungsformat ,--pretty=format:"%H"
um nur diegit checkout $(...)
Festschreibungs- Hash- Ausgabe der Unterschale als Argument für das Auschecken anzuzeigenHinweis:
Dies führt jedoch zu einem abgetrennten Kopf (da wir direkt zum Commit auschecken). Dies kann vermieden werden, indem der Zweigname mit
sed
(siehe unten) extrahiert wird.So wechseln Sie zum Zweig des letzten Commits:
Erläuterung:
git log --branches
Zeigt das Protokoll der Festschreibungen aller lokalen Zweige-1
an. Begrenzt auf ein Festschreiben → Das neueste Festschreibungsformat--pretty=format:"%D"
, um nur die Referenznamen anzuzeigen.| sed 's/.*, //g'
Ignorieren Sie alle bis auf die letzte von mehreren Verweisen. (*)git checkout $(...)
Verwenden Sie die Ausgabe der Unterschale als Argument für das Auschecken*) HEAD- und Remote-Zweige werden zuerst aufgelistet, lokale Zweige werden zuletzt in alphabetisch absteigender Reihenfolge aufgelistet, sodass der verbleibende Name der alphabetisch erste Zweig ist
Hinweis:
Dies verwendet immer nur den (alphabetisch) ersten Zweignamen, wenn für dieses Commit mehrere vorhanden sind.
Wie auch immer, ich denke, die beste Lösung wäre nur, die Ref-Namen für das letzte Commit anzuzeigen, um zu wissen, wohin Sie auschecken müssen:
Erstellen Sie beispielsweise den Alias
git top
für diesen Befehl.quelle
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Schauen Sie sich die grafische Benutzeroberfläche an ...
gitk
sie zeigt alle Commits. Manchmal ist es einfacher, grafisch zu arbeiten ... ^^quelle
Sie können hierfür einen der folgenden git-Befehle verwenden:
quelle
zeige alle Zweige und
setze git log --branches --oneline fest
show last commit
git log --branches -1 --oneline
Vor dem letzten Commit
anzeigen git log --branches -2 --oneline
quelle
quelle
Wenn Sie einen anderen Zweig als den Master haben, können Sie diesen Zweig auf einfache Weise auschecken und dann den Master auschecken. Voila, du bist wieder an der Spitze des Meisters. Es gibt wahrscheinlich intelligentere Wege ...
quelle
Sie können einfach tun
git pull origin branchname
. Das letzte Commit wird erneut abgerufen.quelle
Wenn sich Ihr letztes Commit im Hauptzweig befindet, können Sie es einfach verwenden
quelle