`git holt` einen entfernten Zweig

Lesezeit: 7 Minuten

Davids Benutzeravatar
David

Das Remote-Repository enthält verschiedene Zweige wie z origin/daves_branch:

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/master

Wie wechsle ich zu daves_branch im lokalen Repository, damit es nachverfolgt wird origin/daves_branch?

Ich habe es versucht:

$ git fetch origin daves_branch
$ git checkout daves_branch

  • mögliches Duplikat von git checkout remote branch

    – Andreas Marshall

    2. März 2012 um 17:27 Uhr

  • Ich benutzte: git fetch --allUm dann alle Zweige anzuzeigen: git branchDann checke ich den Zweig aus: git checkout nameofnewbranch

    – Jeff Mattson

    20. September 2017 um 17:24 Uhr


  • überprüfen Sie Ihre Frage und https://stackoverflow.com/questions/1072261/push-and-pull-branches-in-git/47780374#47780374

    – Rizwan

    12. Dezember 2017 um 19:46 Uhr

  • Mögliches Duplikat von How do I check out a remote Git branch?

    – DaveyDaveDave

    22. Januar 2019 um 11:09 Uhr

  • git fetch origin discover:discover && git checkout discover

    – Gayan Weerakutti

    1. Februar 2019 um 16:15 Uhr


Benutzeravatar von Mark Mikofski
Markus Michofski

Ich habe benutzt fetch gefolgt von checkout

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

…Wo <rbranch> ist die Remote-Zweigstelle oder Quelle ref Und <lbranch> ist das noch nicht existent Ortsverband bzw Ziel-Ref Sie verfolgen möchten und die Sie wahrscheinlich genauso benennen möchten wie den Remote-Zweig oder die Quellreferenz. Dies wird unter erläutert Optionen in der Erklärung von <refspec>.

Bash ist so schlau, dass es den ersten Befehl automatisch vervollständigt, wenn ich Tab nach den ersten paar Buchstaben des Remote-Zweigs. Das heißt, ich muss nicht einmal die örtliche Niederlassung nennen; Bash kopiert automatisch den Namen des entfernten Zweigs für mich. Danke, Basch!

Auch wie die Antwort in diesem ähnlichen Stack Overflow-Beitrag zeigt, wenn Sie die lokale Verzweigung nicht benennen fetchkönnen Sie es immer noch erstellen, wenn Sie es auschecken, indem Sie die verwenden -b Flagge. Das ist, git fetch <remote> <branch> gefolgt von git checkout -b <branch> <remote>/<branch> macht genau das gleiche wie meine erste Antwort. Und offensichtlich, wenn Ihr Repository hat einziger Fernbedienung, dann können Sie einfach tun git checkout <branch> nach fetch und es wird eine lokale Verzweigung für Sie erstellt. Zum Beispiel, Sie haben gerade ein Repository geklont und möchten zusätzliche Zweige von der Fernbedienung auschecken.

Ich glaube, dass einige der Dokumentation für fetch möglicherweise wörtlich übernommen pull. Insbesondere der Abschnitt über <refspec> In Optionen ist dasselbe. Allerdings glaube ich das nicht fetch wird immer mergesodass, wenn Sie die Zielseite des Doppelpunkts leer lassen, fetch sollte nichts machen.

NOTIZ: git fetch <remote> <refspec> Kurzform für git fetch <remote> <refspec>: das würde also nichts bringen, aber git fetch <remote> <tag> ist das gleiche wie git fetch <remote> <tag>:<tag> die die Fernbedienung kopieren sollte <tag> örtlich.

Ich denke, das ist nur hilfreich, wenn Sie einen Remote-Zweig lokal kopieren, aber nicht unbedingt sofort auschecken möchten. Ansonsten würde ich jetzt die akzeptierte Antwort verwenden, die im ersten Abschnitt ausführlich erläutert wird Checkout-Beschreibung und später im Optionen Abschnitt unter der Erklärung von --trackda es sich um einen Einzeiler handelt. Also… eine Art Einzeiler, weil Sie es tun würden still muss rennen git fetch <remote> Erste.

FYI: Die Reihenfolge der <refspecs> (source:destination) erklärt die bizarre Pre-Git-1.7-Methode für Löschen entfernter Zweige. Schieben Sie also nichts in die Ziel-Refspec.

  • Dies funktionierte für mich, um den Remote-Code in eine lokale Filiale zu bekommen. Es hat jedoch meine lokale Zweigstelle nicht dazu gebracht, die Remote-Zweigstelle zu verfolgen.

    – Aknosis

    17. September 2014 um 22:35 Uhr

  • Aus irgendeinem Grund, git fetch remote branch hat für mich überhaupt keinen Zweigkopf hinzugefügt, obwohl alle Refs abgerufen wurden. Als ich also versuchte, den Schritten in der akzeptierten Antwort zu folgen, bekam ich den Fehler, dass pathspec did not match any file(s) known to git.aber die rbranch:lbranch Ansatz funktioniert. Interessanterweise wurden auch alle Tags abgerufen, die mit demselben Präfix begannen, als wäre es ein Platzhalter (rbranch*).

    – Haridsv

    30. Juni 2015 um 8:36 Uhr


  • Nit: Git führt keine automatische Vervollständigung durch, sondern die Bash-Shell.

    – legalisieren

    29. Dezember 2015 um 20:44 Uhr

  • FWIW, ich denke, der Unterschied zwischen dieser Antwort und der akzeptierten Antwort besteht darin, dass diese Ihnen sagt, dass Sie das tun sollen fetch Befehl. Die akzeptierte Antwort ist jedoch sinnvoll, da OP feststellt, dass er den Abruf bereits durchgeführt hat. Das ist zumindest das Problem, auf das ich gestoßen bin.

    – Tenor528

    16. März 2017 um 15:17 Uhr

  • Hallo @Honey, wie die obige Antwort besagt: „Und offensichtlich, wenn Ihr Repo nur eine Fernbedienung hat, können Sie nach dem Abrufen einfach git checkout ausführen, und es wird ein lokaler Zweig für Sie erstellt. EG: Sie haben gerade ein Repo geklont und zusätzliche Zweige von der Fernbedienung aus überprüfen möchten.” Auch in der git-checkout-docs: “Wenn nicht gefunden wird, aber ein Tracking-Zweig in genau einer Remote (nennen Sie ihn ) mit einem übereinstimmenden Namen existiert, behandeln Sie ihn als äquivalent zu: $ git checkout -b <branch> --track <remote>/<branch>

    – Mark Mikofski

    5. Juni 2019 um 16:35 Uhr

  • Normalerweise verwende ich git fetch, aber was ist der Unterschied zwischen git fetch und git fetch origin ?

    – Ping Woo

    26. Juli 2019 um 21:12 Uhr

  • @PingWoo Angenommen, der Zweig, den Sie abrufen möchten, befindet sich in Herkunft Fernbedienung, beides git fetch Und git fetch remote werde das gleiche tun. Wenn Sie von einer anderen Fernbedienung als abrufen müssen originkönnten Sie das mit tun git fetch <other_remote_name>. Diese Situation ist sehr ungewöhnlich und wird hier nur der Vollständigkeit halber erwähnt.

    – Paneer Tikka

    6. August 2019 um 10:04 Uhr

  • Ich bekomme fatal: 'fusedwm/fuse_keybindings-setborderpx-alphabar-transparency-monrules-nowarpresize' is not a commit and a branch 'fuse_keybindings-setborderpx-alphabar-transparency-monrules-nowarpresize' cannot be created from it

    – Sicherungsteam

    18. April 2021 um 15:22 Uhr

Benutzeravatar von James Rochabrun
Jakob Rochebrun

Holen Sie sich den Zweig lokal:

git fetch origin <branchName>

Wechseln Sie zu diesem Zweig:

git checkout <branchName>

  • Bringt keine anderen Zweige

    – Benjamin Harel

    17. Oktober 2017 um 8:23 Uhr

  • @BenjaminHarel Die Frage lautet “Hole einen Remote-Zweig”, nicht alle Zweige. Dafür kann dies für Sie hilfreich sein stackoverflow.com/questions/10312521/…

    – James Rochabrun

    2. Mai 2018 um 23:16 Uhr


  • Nachdem Sie dies verwendet haben fetch Der erforderliche Befehlszweig ist auf dem lokalen Computer verfügbar. git checkout -b 'your_branch' origin/'remote branch' ist erforderlich, um diesen Zweig auszuchecken.

    – Abhijeet

    2. Januar 2019 um 3:58 Uhr

  • Ich wünschte, die Leute würden einfachere Antworten wie diese posten. Danke, dass Sie auf den Punkt gekommen sind. Ich bin mir ziemlich sicher, dass ich das ungefähr einmal im Monat google.

    – Chrisbuttacavoli

    16. Februar um 22:08 Uhr

Davids Benutzeravatar
David

Um myBranch auszuchecken, das remote und nicht lokal existiert – das hat bei mir funktioniert:

git fetch --all
git checkout myBranch

Ich habe diese Nachricht bekommen:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

  • Bringt keine anderen Zweige

    – Benjamin Harel

    17. Oktober 2017 um 8:23 Uhr

  • @BenjaminHarel Die Frage lautet “Hole einen Remote-Zweig”, nicht alle Zweige. Dafür kann dies für Sie hilfreich sein stackoverflow.com/questions/10312521/…

    – James Rochabrun

    2. Mai 2018 um 23:16 Uhr


  • Nachdem Sie dies verwendet haben fetch Der erforderliche Befehlszweig ist auf dem lokalen Computer verfügbar. git checkout -b 'your_branch' origin/'remote branch' ist erforderlich, um diesen Zweig auszuchecken.

    – Abhijeet

    2. Januar 2019 um 3:58 Uhr

  • Ich wünschte, die Leute würden einfachere Antworten wie diese posten. Danke, dass Sie auf den Punkt gekommen sind. Ich bin mir ziemlich sicher, dass ich das ungefähr einmal im Monat google.

    – Chrisbuttacavoli

    16. Februar um 22:08 Uhr

Benutzeravatar von Peter Mortensen
Peter Mortensen

Verwenden git branch -a (sowohl lokale als auch entfernte Niederlassungen) oder git branch -r (nur entfernte Zweige), um alle entfernten Zweige und ihre Zweige anzuzeigen. Dann kannst du a git checkout -t remotes/repo/branch zum Remote und erstellen Sie einen lokalen Zweig.

Da ist auch ein git-ls-remote Befehl, um alle Referenzen und Tags für diese Fernbedienung anzuzeigen.

  • git checkout remotes/repo/branch lässt git checkout nach einer Pfadspezifikation suchen, nicht nach einem Remote-Repo.

    – Erin

    15. Februar 2013 um 19:09 Uhr

  • Ja, ist es überhaupt möglich, einen Zweig im Remote-Repo auszuchecken? Offensichtlich (oder vielleicht war es nicht so offensichtlich) werden Remotes zuerst abgerufen, damit Sie sie lokal haben. Das Git-Buch hat einen guten Abschnitt darüber: git-scm.com/book/en/Git-Branching-Remote-Branches

    – Daniel Lee

    16. Februar 2013 um 1:15 Uhr

  • git checkout -t remote_branch_name ist wahrscheinlich der einfachste und faulste Ausweg aus allen Antworten.

    – Anthony Lei

    14. August 2020 um 18:57 Uhr

1443520cookie-check`git holt` einen entfernten Zweig

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy