Ich möchte irgendwie das Äquivalent von cd -
für git. Wenn ich im Zweig master
bin und die Kasse foo
besuche, würde ich gerne etwas wie git checkout -
eingeben, um zu master
zurückzukehren, und es wieder eingeben können, um zu foo
zurückzukehren.
Gibt es so etwas? Wäre es schwer umzusetzen?
Aus den Versionshinweisen für 1.6.2
@{-1}
ist eine Möglichkeit, auf den letzten Zweig zu verweisen, in dem Sie sich befanden. Das ist
nicht nur dort akzeptiert, wo ein Objektname erwartet wird, sondern überall eine Zweigname wird erwartet und verhält sich so, als hätten Sie den Zweignamen eingegeben.
Z.B.git branch --track mybranch @{-1}
,git merge @{-1}
undgit rev-parse --symbolic-full-name @{-1}
würde wie erwartet funktionieren.
und
git checkout -
ist eine Abkürzung fürgit checkout @{-1}
.
Dies ist heutzutage der einfachste Weg:
git checkout -
... das ist ein Alias von:
git checkout @{-1}
Wenn Sie mehr darüber erfahren möchten, habe ich hier einen ganzen Artikel darüber geschrieben: Checkout The Previous Branch In Git .
Wie @Karl darauf hinweist und aus dem git checkout
Handbuch:
Als Sonderfall überprüft die Syntax "@ {- N}" für den N-ten letzten Zweig raus aus dem Zweig (statt abzutrennen). Sie können auch angeben - was ist auch mit "@ {- 1}".
In diesem Fall würden also sowohl git checkout -
als auch git checkout @{-1}
funktionieren
Am nächsten glaube ich ist der git reflog
und parse den neuesten moving from branch1 to branch2
und git checkout branch1
Fügen Sie einfach mehr Details zu den vorherigen Antworten hinzu, um die Funktionsweise von git checkout @{-N}
zu verstehen. Es geht durch das Refflog, um den Checkout-Verlauf zu überprüfen. Wenn Sie also etwas Ähnliches eigenständig implementieren möchten, sollten Sie die Ausgabe von git reflog
auf checkout:
-Zeilen analysieren können. Sie können die Implementierung in der Git-Quelle sha1_name.c
überprüfen, insbesondere die Funktion interpret_nth_prior_checkout
.
Ich kam zu dieser Frage mit dem gleichen Gedanken, meine bisherige Niederlassung zu überprüfen. Ich verwende ohmyz in Mac
. Der folgende Befehl hat mir geholfen.
$ gco -
$ git checkout -
Hier sind Verweise auf die Teile der Git-Dokumentation, die die Lösungen git checkout -
und git checkout @{-1}
beschreiben, die in den anderen Antworten angegeben sind:
Wenn Sie eine Git-Revision für einen Befehl angeben, ist @{-<n>}
, z. @{-1}
bedeutet "der n -te Zweig/Commit wurde vor dem aktuellen ausgecheckt." Die Dokumentation für git checkout <branch>
wiederholt: "Sie können die Syntax @{-N}
verwenden, um auf das N zu verweisen -te letzte Verzweigung/Commit wurde mit der git checkout
-Operation ausgecheckt. "
Für das Argument <branch>
VON git checkout
können Sie auch "-
" angeben, was gleichbedeutend mit "@{-1}
" ist. "
Die Git-Version 2.23
hat den Befehl git switch
eingeführt, mit dem Sie dies tun können (und mehr). Zitieren der offiziellen Dokumentation:
Wechseln Sie zu einem bestimmten Zweig. Der Arbeitsbaum und der Index werden entsprechend der Verzweigung aktualisiert. Alle neuen Commits werden an der Spitze dieses Zweigs hinzugefügt.
In Ihrem speziellen Fall können Sie git switch -
eingeben, um zu dem Zweig zurückzukehren, in dem Sie zuvor waren. Sie können denselben Befehl erneut ausführen, um zum ersten Zweig zurückzukehren.
P.S. Es ist nicht so, dass Sie nicht bereits wissen, wie man das macht (ich meine, Sie haben diese Frage vor sieben Jahren gestellt), aber dieser Befehl ist weniger verwirrend und für Anfänger freundlich, da er ein allgemeines Verwirrung anspricht das entsteht, wenn git checkout
verwendet wird.
Die beliebteste Lösung ist:
git checkout @{-N}
N-Schritt-Anzahl der Zweige, um zurück zum Checkout-Verlauf zu gelangen.