it-swarm.com.de

Wie komme ich nach dem Auschecken eines vorherigen Commits zum letzten Commit zurück?

Ich überprüfe manchmal eine frühere Version des Codes, um sie zu untersuchen oder zu testen. Ich habe Anweisungen gesehen, was zu tun ist, wenn ich vorherige Commits ändern möchte - aber ich nehme an, ich mache keine Änderungen. Nachdem ich z. git checkout HEAD^, wie komme ich zurück zur Spitze des Zweigs? .. git log zeigt mir nicht mehr die SHA des letzten Commits.

367
Leo Alekseyev

Wenn Sie wissen, dass der Commit, zu dem Sie zurückkehren möchten, der Kopf eines Zweiges ist oder mit einem Tag versehen ist, können Sie dies einfach tun

git checkout branchname

Sie können auch git reflog verwenden, um zu sehen, auf welche anderen Commits Ihr HEAD (oder ein anderer Ref) in der Vergangenheit gezeigt hat.


Zum Hinzufügen hinzugefügt:

Wenn Sie in neueren Versionen von Git nur git checkout oder etwas anderes ausgeführt haben, um Ihre HEAD einmal zu verschieben, können Sie dies auch tun 

git checkout -

um wieder dorthin zu wechseln, wo es vor der letzten Kasse war. Dies wurde durch die Analogie zum Shell-Idiom cd - motiviert, zu dem Arbeitsverzeichnis zurückzukehren, in dem Sie sich zuvor befanden.

477
Phil Miller

git checkout master

master ist der Tipp oder das letzte Commit. gitk zeigt nur, wo Sie sich gerade im Baum befinden. git reflog zeigt alle Commits an, aber in diesem Fall willst du nur den Tipp, also git checkout master.

22
Bruce Wells

Kam gerade über diese Frage und habe etwas hinzuzufügen

Um zum letzten Commit zu gehen:

git checkout $(git log --branches -1 --pretty=format:"%H")

Erklärung:

git log --branches zeigt das Protokoll der Commits aller lokalen Zweigstellen
-1 auf ein Commit beschränken → jüngstes Commit
--pretty=format:"%H" formatiert, um nur den Commit-Hash anzuzeigen
git checkout $(...) verwendet die Ausgabe der Subshell als Argument für die Kaufabwicklung

Hinweis:

Dies führt jedoch zu einem freistehenden Kopf (da wir direkt zum Commit gehen). Dies kann vermieden werden, indem der Verzweigungsname mithilfe der unten beschriebenen sed extrahiert wird.


Um zum Zweig des letzten Commits zu gehen:

git checkout $(git log --branches -1 --pretty=format:'%D' | sed 's/.*, //g')

Erklärung:

git log --branches zeigt das Protokoll der Commits aller lokalen Zweigstellen
-1 auf ein Commit beschränken → jüngstes Commit
--pretty=format:"%D" Format, um nur Referenznamen anzuzeigen
| sed 's/.*, //g' ignoriert alle Refs (*) bis auf den letzten.
git checkout $(...) verwendet die Ausgabe der Subshell als Argument für die Kaufabwicklung

*) HEAD und entfernte Verzweigungen werden zuerst aufgelistet, lokale Verzweigungen werden zuletzt in alphabetisch absteigender Reihenfolge aufgeführt. Der verbleibende Zweig ist also der alphabetisch erste Zweigname.

Hinweis:

Dabei wird immer nur der (alphabetisch) erste Zweigname verwendet, wenn für diese Festschreibung mehrere vorhanden sind.


Ich denke jedoch, die beste Lösung wäre nur die Anzeige der Referenznamen für das letzte Commit, um zu wissen, wo Sie auschecken müssen:

git log --branches -1 --pretty=format:'%D'

Z.B. Erstellen Sie den Alias ​​git top für diesen Befehl.

16
816-8055

Schauen Sie sich die grafische Benutzeroberfläche an ... gitk zeigt alle Commits. Manchmal ist es einfacher, grafisch zu arbeiten ... ^^

9
tanascius

Sie können dazu einen der folgenden git-Befehle verwenden:

git checkout master
git checkout branchname
6
hothead1000

alle Niederlassungen anzeigen und festlegen 
git log - branches --oneline

letzten Commit anzeigen 
git log - branches -1 --oneline

vor dem letzten Commit anzeigen 
git log - branches -2 --oneline

0
abdesselam

Wenn Sie einen anderen Zweig als Master haben, können Sie diesen Zweig auf einfache Weise auschecken und dann Master auschecken. Voila, du bist zurück an der Spitze des Meisters. Es gibt wahrscheinlich intelligentere Wege ...

0
ConorR
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>
0
Atif Majeed