Ich möchte irgendwie das Äquivalent von cd -
für Git. Wenn ich in einer Filiale bin master
und zur Kasse gehe foo
, würde ich gerne etwas eingeben können , zu dem ich zurückkehren möchte , und es erneut eingeben können, um zu zurückkehren .git checkout -
master
foo
Gibt es so etwas? Wäre es schwer zu implementieren?
git
git-checkout
Matt Briggs
quelle
quelle
gc-
oder war das die Abkürzung fürgit checkout -
Antworten:
Aus den Versionshinweisen zu 1.6.2
und
quelle
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, das ist der Upstream-Zweig des aktuellen Zweigs. Es ist sehr nützlich, um beispielsweisegit log @{u}..
Upstream-Commits aufzulisten, die noch nicht abgerufen wurden. Und das Gegenteil,git log ..@{u}
das sind nur die lokalen Commits, die noch nicht gepusht wurden.Der einfachste Weg dies heutzutage zu tun ist:
... das ist ein Alias von:
Wenn Sie mehr darüber wissen möchten, habe ich hier einen ganzen Artikel darüber geschrieben: Checkout The Previous Branch In Git .
quelle
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. In bash müssen Sie etwas Äquivalentes schreiben (Reflog abrufen und in Zeilen filtern, die den String ": checkout:" enthalten, und dann den Zweignamen extrahieren). Dies ist eigentlich, was git tutWie @Karl und aus dem
git checkout
Handbuch hervorhebt :Also beides
git checkout -
undgit checkout @{-1}
würde in diesem Fall funktionierenAm nächsten, glaube ich, ist das Verwendengit reflog
und Analysieren der neuestenmoving from branch1 to branch2
undgit checkout branch1
quelle
Fügen Sie den vorherigen Antworten nur einige Details hinzu, um den Mechanismus zu verstehen, nach dem
git checkout @{-N}
funktioniert. Das Reflog wird durchlaufen, um den Checkout-Verlauf zu überprüfen. Wenn Sie also etwas Ähnliches selbst implementieren möchten, sollten Sie in der Lage sein, die Ausgabe dergit reflog
Suche nachcheckout:
Zeilen zu analysieren . Sie können die Implementierung in der Git-Quelle überprüfensha1_name.c
, insbesondere die Funktioninterpret_nth_prior_checkout
.quelle
Die Git-Version
2.23
hat dengit switch
Befehl eingeführt, mit dem Sie dies (und mehr) tun können. Zitieren der offiziellen Dokumentation:In Ihrem speziellen Fall können Sie Probleme haben
git switch -
, zu dem Zweig zurückzukehren, in dem Sie zuvor waren. Sie können denselben Befehl erneut ausführen, um zum ersten Zweig zurückzukehren.PS Es ist nicht so, dass Sie noch nicht wissen, wie das geht (ich meine, es ist 7 Jahre her, seit Sie diese Frage gestellt haben), aber dieser Befehl ist für Anfänger weniger verwirrend und freundlich, da er eine häufige Verwirrung behebt, die bei der Verwendung auftritt
git checkout
.quelle
Ich bin mit dem gleichen Gedanken auf diese Frage gestoßen, um meinen vorherigen Zweig zu überprüfen. Ich benutze Ohmyz in
Mac
. Der folgende Befehl hat mir geholfen.quelle
gco
als Kurzschreibweisegit checkout
. Alsogco -
einfach anrufengit checkout -
.git checkout -
. für ausfallsicher aktualisiert.Die beliebteste Lösung ist:
Wobei N - Schrittanzahl der Zweige, um zum Checkout-Verlauf zurückzukehren.
quelle
Hier sind Hinweise auf die Teile der Git-Dokumentation, die die
git checkout -
und diegit checkout @{-1}
Lösungen der anderen Antworten beschreiben:Wenn Sie eine Git-Revision für einen Befehl angeben
@{-<n>}
,@{-1}
bedeutet dies beispielsweise "der n- te Zweig / Commit wurde vor dem aktuellen ausgecheckt". In der Dokumentation fürgit checkout <branch>
Wiederholungen heißt es: "Sie können die@{-N}
Syntax verwenden, um auf den N-ten letzten Zweig / Commit zu verweisen, der mitgit checkout
Operation ausgecheckt wurde ."Für das
<branch>
Argumentgit checkout
"Sie können auch" angeben-
, was gleichbedeutend ist mit@{-1}
"."quelle