web-dev-qa-db-de.com

Gibt es eine Möglichkeit, zur vorherigen Filiale zurückzukehren?

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?

513
Matt Briggs

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} und
git rev-parse --symbolic-full-name @{-1} würde wie erwartet funktionieren.

und

git checkout - ist eine Abkürzung für git checkout @{-1}.

902
Karl Bielefeldt

Dies ist heutzutage der einfachste Weg:

git checkout -

... das ist ein Alias ​​von:

git checkout @{-1}

 git checkout minus

Wenn Sie mehr darüber erfahren möchten, habe ich hier einen ganzen Artikel darüber geschrieben: Checkout The Previous Branch In Git .

136
marcgg

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

24
manojlds

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.

10
ddd

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 -
3
Venkat.R

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. "

0
Rory O'Kane

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.

0
Mike

Die beliebteste Lösung ist:

git checkout @{-N}

N-Schritt-Anzahl der Zweige, um zurück zum Checkout-Verlauf zu gelangen.

0
Jackkobec