Wie durch Commit a047faf (Git 1.8.4.3+) veranschaulicht, können Sie auch Folgendes versuchen:
git checkout xyz --
(Hinweis: Die Fehlermeldung wird mit Git 2.21, Q1 2019 klarer. )
Das würde klar machen, dass der xyz
Teil ein Zweig oder ein Commit ist, während alles danach --
ein Pfad sein muss (hier wird kein Pfad angegeben). Weitere Informationen finden Sie hier zur Doppelbindestrich-Konvention .
Wenn Sie es ohne das ' --
' versuchen , funktioniert dies möglicherweise nicht oder nicht, wie in " Warum erstellt Git Checkout <remote_branchname>
keinen neuen Tracking-Zweig? " Gezeigt :
git checkout name
tut:
- Wenn es sich um einen lokalen Zweig oder einen expliziten Remote-Zweig handelt, wechseln Sie zu diesem.
- Wenn es sich um einen verfolgten Pfad handelt, setzen Sie ihn zurück
- Wenn es sich um einen Remote-Zweig handelt, erstellen Sie einen Tracking-Zweig und wechseln Sie zu diesem.
Und sein Verhalten ist nicht immer dasselbe. Daher das ' --
', um eine klare Begriffsklärung zu liefern.
Update August 2019, Git 2.23+
git checkout
ist zu verwirrend und wird ersetzt durch:
git switch
: Bedeutung git switch xyz
funktioniert auch, wenn Sie eine Datei haben xyz
,
git restore
: Bedeutung git restore xyz
funktioniert auch, wenn Sie einen Zweig haben xyz
.
Außerdem, wie ich in " Warum ist mein Git-Repo in einen getrennten HEAD-Status eingetreten? " Erkläre , gibt es keinen unerwarteten getrennten HEAD mehr.
Während die Lösung von VonC funktioniert, kann ich mich nie an die Syntax erinnern, daher verwende ich normalerweise eine Low-Tech-Lösung:
Oder wenn Sie keine Unterverzeichnisse haben:
Es ist leichter zu merken und es funktioniert ;-)
quelle
Git 2.21 (Q1 2019, 4+ Jahre später) wird die Fehlermeldung klären und Vorschläge machen
"
git checkout frotz
" ( ohne einen von mir ursprünglich vorgeschlagenen Doppelstrich ) vermeidet Mehrdeutigkeiten, indem sichergestellt wird, dass 'frotz
' nicht gleichzeitig als Revision und als Pfad interpretiert werden kann .Diese Sicherheit wurde aktualisiert, um auch einen eindeutigen Fernverfolgungszweig
frotz
in einer Fernbedienung zu überprüfen , wenn beim Dimmen ein lokaler Zweigfrotz
aus einem Fernverfolgungszweigfrotz
von einer Fernbedienung erstellt wird.Hinweis: "dwim" (unten verwendet) ist "tun, was ich meine" , wenn ein Computersystem versucht, vorauszusehen, was Benutzer beabsichtigen, und triviale Fehler automatisch korrigiert, anstatt die expliziten, aber möglicherweise falschen Eingaben der Benutzer blind auszuführen.
Siehe Commit be4908f (13. November 2018) von Nguyễn Thái Ngọc Duy (
pclouds
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 8d7f9db , 04. Januar 2019)git checkout foo --
" wird dwim und Zweig erstellen "foo
" 6Die Manpage
git checkout
enthält vorerst:Vor Git 2.26 (Q1 2020) ist "
git checkout X
" nicht korrekt fehlgeschlagen, wennX
es sich nicht um einen lokalen Zweig handelt, sondern es konnten mehrere Remote-Tracking-Zweige benannt werden (dh als Ausgangspunkt für die Erstellung eines entsprechenden lokalen Zweigs gedimmt werden) korrigiert.Siehe Commit fa74180 , Commit 2957709 (30. Dezember 2019) von Alexandr Miloslavskiy (
SyntevoAlex
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit d0e70cd , 05. Februar 2020)Mit Git 2.30 (Q1 2021) lernte "
git checkout
" ( man ) , diecheckout.guess
Konfigurationsvariable zu verwenden und die--[no-]guess
Option " " entsprechend zu aktivieren / deaktivieren .Siehe Commit 64f1f58 (07. Oktober 2020) und Commit ef09e7d (06. Oktober 2020) von Denton Liu (
Denton-L
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 0e41cfa , 27. Oktober 2020)git config
enthält jetzt in seiner Manpage :git checkout
enthält jetzt in seiner Manpage :git switch
enthält jetzt in seiner Manpage :quelle
Du liegst falsch. Der Zweig xyz wird ausgecheckt.
Um eine Datei auszuchecken, müssen Sie den Befehl verwenden
git checkout -- xyz
. Git erlaubt Ihnen nur eine Verknüpfung für Dateien, wenn es keinen Zweig mit demselben Namen gibt.Siehe
git checkout --help
für Details.quelle
Switched to branch 'xyz'
aber in meinem Fall gab es keine Antwort. Welches ist das übliche Szenario beim Auschecken einer Datei. Ich habe auch die Ausgabe von gesehen, umgit branch -va
zu dem Schluss zu kommen, dass keine solche Änderung stattgefunden hat.