Git holen Remote-Zweig

2260

Mein Kollege und ich arbeiten am selben Repository. Wir haben es in zwei Zweige verzweigt, jeder technisch für verschiedene Projekte, aber sie haben Ähnlichkeiten, deshalb möchten wir uns manchmal wieder auf das * mastervon der festlegen branch.

Ich habe jedoch die branch. Wie kann mein Kollege diesen Zweig konkret ziehen?

Ein git cloneMitglied des Repositorys scheint die Zweige nicht lokal für ihn zu erstellen, obwohl ich sie nach einem Druck auf mein Ende live weiter sehen kann.

Als ich den Zweig ursprünglich gemacht habe, habe ich es auch getan -b checkout. Macht das einen großen Unterschied?

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

$ git fetch origin discover
$ git checkout discover

Dies sind die Befehle, die ich ausgeführt habe. Aber es funktioniert definitiv nicht.

Ich möchte in der Lage sein, diesen Zweig zu überprüfen und dann nur die Zweigänderungen von verschiedenen Mitarbeitern oder Arbeitsstationen zu verschieben und zurückzuschreiben .

David
quelle
9
Mögliches Duplikat von Git Checkout Remote Branch
Andrew Marshall
33
Ich habe verwendet : git fetch --all, Dann, um alle Zweige anzuzeigen : git branch, Dann checke ich den Zweig aus:git checkout nameofnewbranch
Jeff Mattson
Mögliches Duplikat von Wie checke ich einen Remote-Git-Zweig aus?
DaveyDaveDave
6
git fetch origin discover:discover && git checkout discover
Gayan Weerakutti

Antworten:

3060

Sie müssen einen lokalen Zweig erstellen, der einen Remote-Zweig verfolgt. Mit dem folgenden Befehl wird ein lokaler Zweig mit dem Namen daves_branch erstellt , der den Ursprung des Remote-Zweigs / daves_branch verfolgt . Wenn Sie Ihre Änderungen vornehmen, wird der Remote-Zweig aktualisiert.

Für die neuesten Versionen von Git:

git checkout --track origin/daves_branch

--trackist eine Abkürzung für git checkout -b [branch] [remotename]/[branch]"remotename] ist in diesem Fall der Ursprung und [branch] ist doppelt gleich, in diesem Fall daves_branch .

Für Git 1.5.6.5 brauchten Sie Folgendes:

git checkout --track -b daves_branch origin/daves_branch

Für Git 1.7.2.3 und höher ist dies ausreichend (es hat möglicherweise früher begonnen, aber dies ist die früheste Bestätigung, die ich schnell finden konnte):

git checkout daves_branch

Beachten Sie, dass mit den neuesten Git-Versionen dieser Befehl keinen lokalen Zweig erstellt und Sie in den Status "Getrennter HEAD" versetzt. Wenn Sie eine lokale Niederlassung möchten, verwenden Sie die --trackOption.

Ausführliche Informationen finden Sie hier: 3.5 Git Branching - Remote Branches, Tracking Branches

ralphtheninja
quelle
134
"git fetch", um sicherzustellen, dass Ihr Repo mit Remote-Referenzen aktualisiert wird und "git checkout --track origin / Discover" sollte ausreichen. Dann können Sie sich auf diesen Zweig festlegen und einen "Git Push" ausführen, um die Fernbedienung mit Ihren Änderungen zu synchronisieren.
Ralphtheninja
33
Ich habe dies versucht und wurde zu "fatal: git checkout: Das Aktualisieren von Pfaden ist nicht kompatibel mit dem Wechseln von Zweigen. Wollten Sie 'upstream / Develop' auschecken, das nicht als Commit aufgelöst werden kann?". Mache ich etwas falsch?
Neil Barnwell
42
Es sieht so aus, als ob Git 1.5.6.5 dies stattdessen benötigt: Git Checkout --track -b origin / daves_branch
Charlie
35
Dies hat mich durcheinander gebracht, es hat einen lokalen Zweig namens origin / <branch> erstellt, der jetzt nicht mehr mit dem Ursprung / <branch> des entfernten Zweigs übereinstimmt, und ich weiß nicht, wie ich den verrückten lokalen Zweig loswerden soll!
Alan Moore
24
Sie müssen den lokalen Zweigstellennamen explizit hinzufügen, andernfalls erstellt git einen neuen lokalen Zweig mit dem vollständigen Zweigpfad, wie oben angegeben: @AlanMoore und @ derekmx271:git checkout -b --track daves_branch origin/daves_branch
Mike Scott
961

Ich habe fetchgefolgt von checkout...

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

... wo <rbranch>sich der Remote-Zweig oder die Quellreferenz befindet und wo <lbranch>sich der noch nicht vorhandene lokale Zweig oder die Zielreferenz befindet, die Sie verfolgen möchten und die Sie wahrscheinlich genauso benennen möchten wie der Remote-Zweig oder die Quellreferenz. Dies wird unter Optionen in der Erläuterung von erläutert <refspec>.

Git ist so klug es automatisch den ersten Befehl , wenn ich abgeschlossen Register nach den ersten paar Buchstaben des entfernten Zweig. Das heißt, ich muss nicht einmal den lokalen Zweig benennen, Git kopiert automatisch den Namen des entfernten Zweigs für mich. Danke Git!

Wie die Antwort in diesem ähnlichen Beitrag zum Stapelüberlauf zeigt, können Sie den lokalen Zweig fetchauch dann erstellen, wenn Sie ihn mit dem -bFlag auschecken , wenn Sie ihn nicht benennen . Das heißt, git fetch <remote> <branch> gefolgt von git checkout -b <branch> <remote>/<branch>genau das Gleiche wie meine ursprüngliche Antwort. Und offenbar, wenn Ihr Repository hat nur eine Fernbedienung, dann kann man nur tun , git checkout <branch>nach fetchund es wird eine lokale Niederlassung für Sie erstellen. Sie haben beispielsweise gerade ein Repository geklont und möchten zusätzliche Zweige von der Fernbedienung auschecken.

Ich glaube, dass ein Teil der Dokumentation für fetchwörtlich kopiert wurde pull. Insbesondere auf den Abschnitt <refspec>in Optionen ist gleich. Ich glaube jedoch nicht, dass dies fetchjemals der Fall sein wird merge, sodass Sie fetch nichts tun sollten , wenn Sie die Zielseite des Doppelpunkts leer lassen .

HINWEIS: git fetch <remote> <refspec>ist die Abkürzung für git fetch <remote> <refspec>:welche wäre also nichts tun, sondern git fetch <remote> <tag>ist das gleiche wie git fetch <remote> <tag>:<tag>die die Fern kopieren soll <tag>vor Ort.

Ich denke, dies ist nur hilfreich, wenn Sie einen Remote-Zweig lokal kopieren möchten, ihn aber nicht unbedingt sofort auschecken müssen. Andernfalls würde ich jetzt die akzeptierte Antwort verwenden , die im ersten Abschnitt der Checkout-Beschreibung und später im Optionsabschnitt unter der Erläuterung von ausführlich erläutert wird --track, da es sich um einen Einzeiler handelt. Nun ... eine Art Einzeiler, weil man immer noch git fetch <remote>zuerst laufen müsste .

Zu Ihrer Information: Die Reihenfolge der <refspecs>(Quelle: Ziel) erklärt die bizarre Methode vor Git 1.7 zum Löschen entfernter Zweige . Das heißt, schieben Sie nichts in die Zielreferenz.

Mark Mikofski
quelle
8
Sie gehen davon aus, dass die automatische Vervollständigung von Git eingerichtet ist. code-worrier.com/blog/autocomplete-git
antonagestam
2
Dies funktionierte für mich, um den Remote-Code in eine lokale Niederlassung zu bringen. Mein lokaler Zweig konnte den Remote-Zweig jedoch nicht verfolgen.
Aknosis
1
Aus irgendeinem Grund git fetch remote branchhabe ich überhaupt keinen Verzweigungskopf hinzugefügt, obwohl alle Refs abgerufen wurden. Als ich versuchte, den Schritten in der akzeptierten Antwort zu folgen, bekam ich den Fehler pathspec did not match any file(s) known to git., aber der rbranch:lbranchAnsatz funktionierte. Interessanterweise wurden auch alle Tags abgerufen, die mit demselben Präfix begonnen haben, als wäre es ein Platzhalter ( rbranch*).
Haridsv
3
Nit: git führt das Autocompleting nicht durch, sondern die Bash-Shell.
legalisieren
1
FWIW, ich denke, der Unterschied zwischen dieser Antwort und der akzeptierten Antwort besteht darin, dass diese Ihnen sagt, dass Sie den fetchBefehl ausführen sollen . 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
373

Wenn Sie versuchen, einen neuen Remote-Zweig "auszuchecken" (der nur auf der Remote, aber nicht lokal vorhanden ist), benötigen Sie Folgendes:

git fetch origin
git checkout --track origin/<remote_branch_name>

Dies setzt voraus, dass Sie vom Ursprung abrufen möchten . Wenn nicht, ersetzen Sie den Ursprung durch Ihren Remote- Namen.

Paneer Tikka
quelle
1
Ich habe für mich gearbeitet und nicht den richtigen Remote-Zweig abgerufen, sodass die akzeptierte Antwort mit einer verwirrenden Nachricht für mich immer wieder fehlschlug. +1
Nathan Hinchey
Normalerweise verwende ich Git-Fetch, aber was ist der Unterschied zwischen Git-Fetch und Git-Fetch-Ursprung?
Ping Woo
@PingWoo Angenommen, der Zweig, den Sie abrufen möchten, befindet sich in Origin Remote, beide git fetchund git fetch remotetun dasselbe. Wenn Sie von einer anderen Fernbedienung als originabrufen müssen, können Sie dies mit verwenden git fetch <other_remote_name>. Diese Situation ist höchst ungewöhnlich und wurde hier der Vollständigkeit halber erwähnt.
paneer_tikka
1
Ich habe fast meinen Kopf gegen den PC geschlagen und all diese Lösungen ausprobiert. Es stellte sich heraus, dass ich einen Tippfehler in meinem Filialnamen hatte, dumm, hehe.
Dev Yego
126

So checken Sie myBranch aus, die remote und nicht lokal vorhanden ist - das hat bei mir funktioniert:

git fetch --all
git checkout myBranch

Ich habe diese Nachricht erhalten:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
David
quelle
1
Mit anderen Worten, Sie müssen nicht schreiben -t?
Andrew Samuelsen
4
Ich denke, diese Antwort enthält einen Fehler. Ich habe den Befehl ursprünglich ohne ausgeführt -tund bekam, You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.weil es keinen gleichnamigen lokalen Zweig gab. Ich musste erneut laufen, -tum das Problem zu beheben.
Stanri
1
Dies funktionierte gut für mich - mein Kollege hatte einen neuen Remote-Zweig hinzugefügt, den ich meinem lokalen Repo hinzufügen wollte. Ich holte weiter, sah aber nicht, dass der neue Zweig lokal angezeigt wurde. Ich wusste nicht, dass ich einfach dafür rennen könnte, checkoutum es zu erschaffen. Vielen Dank!
Skwidbreth
2
hängt von Git-Versionen ab. Die neueste Version benötigt, wie an anderer Stelle hier erwähnt, nur die Git-Kasse <Name des Zweigs am Ursprung>. Seien Sie vorsichtig mit dem gleichen Namen LOCAL vs REMOTE BRANCHES - sie werden Sachen
durcheinander bringen
--allist niemals eine gute Idee, da jede Datei in jedem Zweig heruntergeladen wird. Es wird mehr Zeit und Raum brauchen. Es ist besser , spezifisch mit dem Zweignamen zu sein und zu tun , wie diese
Honig
53

Verwenden Sie git branch -a(sowohl lokale als auch entfernte Zweige) oder git branch -r(nur entfernte Zweige), um alle Fernbedienungen und ihre Zweige anzuzeigen. Sie können dann eine Verbindung git checkout -t remotes/repo/branchzur Fernbedienung herstellen und einen lokalen Zweig erstellen.

Es gibt auch einen Befehl git-ls-remote, mit dem alle Refs und Tags für diese Fernbedienung angezeigt werden.

Daniel Lee
quelle
git checkout remotes/repo/branchLässt Git Checkout nach einer Pfadspezifikation suchen, nicht nach einem Remote-Repo.
Erin
1
Ja, ist es überhaupt möglich, einen Zweig auf dem Remote-Repo auszuchecken? Offensichtlich (oder vielleicht war es nicht so offensichtlich) werden Fernbedienungen 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
43

Der Titel und die Frage sind verwirrt:

  • Git holen Remote-Zweig
  • Wie kann mein Kollege diesen Zweig konkret ziehen?

Wenn die Frage ist, wie kann ich einen Remote-Zweig zum Arbeiten bringen oder wie kann ich einen Remote-Zweig auschecken? Eine einfachere Lösung ist:

Mit Git (> = 1.6.6) können Sie Folgendes verwenden:

git checkout <branch_name>

Wenn local <branch_name>nicht gefunden wird, aber in genau einer Fernbedienung ein Tracking-Zweig mit einem übereinstimmenden Namen vorhanden ist, behandeln Sie ihn als äquivalent zu:

git checkout -b <branch_name> --track <remote>/<branch_name>

Siehe Dokumentation zum Auschecken von Git

Für deinen Freund:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'
Guillaume Vincent
quelle
Danke Guillaume! Ich habe gerade diesen Befehl verwendet und einen Beitrag darüber geschrieben, um meinen genauen Fall darzustellen: leniel.net/2014/05/…
Leniel Maccaferri
<! - git checkout <remote-zweigname> -> funktioniert wie erwartet, danke Guillaume!
Sachidananda Naik
36

Der einfachste Weg, zumindest für mich:

git fetch origin <branchName> # Will fetch the branch locally
git checkout <branchName> # To move to that branch
James Rochabrun
quelle
1
Bringt keine anderen Zweige
Benjamin Harel
7
@BenjaminHarel die Frage sagt "einen entfernten Zweig holen" nicht alle Zweige. dafür kann dies hilfreich sein für Sie stackoverflow.com/questions/10312521/…
James Rochabrun
2
Nach Verwendung dieses fetchBefehls ist der erforderliche Zweig auf dem lokalen Computer verfügbar. git checkout -b 'your_branch' origin/'remote branch'ist erforderlich, um diesen Zweig auszuchecken.
Abhijeet
30

Verwenden:

git checkout -b serverfix origin/serverfix

Dies ist eine Operation, die häufig genug ist, damit Git die --trackKurzform bereitstellt :

git checkout --track origin/serverfix

Tatsächlich ist dies so häufig, dass es sogar eine Verknüpfung für diese Verknüpfung gibt. Wenn der Filialname, den Sie auschecken möchten (a), nicht vorhanden ist und (b) genau mit einem Namen auf nur einer Fernbedienung übereinstimmt, erstellt Git einen Tracking-Zweig für Sie:

git checkout serverfix

Um einen lokalen Zweig mit einem anderen Namen als den Remote-Zweig einzurichten, können Sie problemlos die erste Version mit einem anderen lokalen Zweignamen verwenden:

git checkout -b sf origin/serverfix

Jetzt wird Ihre lokale Niederlassung sfautomatisch abrufen origin/serverfix.

Quelle: Pro Git, 2. Auflage , geschrieben von Scott Chacon und Ben Straub (zur besseren Lesbarkeit geschnitten)

ManuelSchneid3r
quelle
Diese Abkürzungen waren eine Lektion
Z. Khullah
25

Mit diesem einfachen Befehl:

git checkout -b 'your_branch' origin/'remote branch'
Karthik Damodara
quelle
18

Der einfachste Weg, um einen Zweig abzurufen, der auf der Fernbedienung vorhanden ist, ist:

git fetch origin branchName
git checkout branchName

Sie können sehen, ob es auf der Fernbedienung bereits vorhanden ist mit:

git branch -r

Dadurch wird der Remote-Zweig zu Ihrem lokalen Zweig abgerufen und der Remote-Zweig automatisch verfolgt.

Harshit Agarwal
quelle
2
Wie hat diese Frage nicht mehr positive Stimmen? Ich könnte mich irren, aber das schien sicher den Trick zu tun, holte einen Zweig, den ich nicht vor Ort hatte, von entfernt ...
Nicholas Petersen
15

Was mir geholfen hat war

1) Anzeigen aller verfügbaren Remote-Zweige (z. B. 'Name des Remote-Zweigs')

git branch -r

2) Erstellen Sie einen lokalen Zweig mit dem Namen des Remote-Zweigs

git fetch && git checkout 'remote-branch-name'
Arlan T.
quelle
1
Was passiert, wenn Sie den Befehl git pushohne andere Argumente ausführen ? Ist die lokale Niederlassung namens remote-branch-nameautomatisch zugeordnet (Tracking) der Remote - Zweig genannt origin/remote-branch-name. Oder müssen Sie laufengit push -u origin remote-branch-name
PatS
1
Dies wird dazu führen, dass sich der KOPF löst
Akin Hwan,
15

Sie können den Remote-Zweig auch auf einmal abrufen und auschecken:

git fetch && git checkout the-branch-name
Kumar Sambhav
quelle
14
git fetch

git branch -r

git checkout <branch_name>
John Rodriguez
quelle
13

Ich tippte

git checkout <branch_name>

und bekam

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
Guillaume Guillaume
quelle
aus der git checkout Dokumentation: Wenn <branch_name> nicht gefunden wird, aber in genau einer Fernbedienung ein Tracking-Zweig mit einem passenden Namen vorhanden ist, behandeln Sie dies als äquivalent zu:git checkout -b <branch_name> --track <remote>/<branch_name>
Guillaume Vincent
11

Manchmal werden Sie gebeten, nicht mit dem Hauptzweig herumzuspielen und nur den Remote-Zweig zu bearbeiten (wie ich gebeten wurde). Alles, was Sie brauchen, ist der Remote-Zweig.

Führen Sie dies aus, um den Remote-Zweig allein (ohne den Master) zu klonen

git clone url --branch remote_branch_name

Dabei ist remote_branch_name der Name des Remote-Zweigs

Zum Beispiel,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Dadurch wird sichergestellt, dass Sie den Remote-Zweig mit dem Namen des Remote-Zweigs in Ihren lokalen Zweig klonen.

Wenn Sie nun Ihren Code festschreiben und pushen, wird der Code nur an diesen Zweig gesendet.

Ganezdragon
quelle
Verwandte: Wie klone ich einen einzelnen Zweig in Git? - "Git 1.7.10 (April 2012) erlaubt Ihnen tatsächlich, nur einen Zweig zu klonen:"
Peter Mortensen
11

[Schnelle Antwort]

Es gibt viele Alternativen und meine Favoriten sind:

- Alternative 1:

git fetch --all
git checkout YourBranch

Verwenden dieser Alternative mithilfe eines Zweigs, der remote vorhanden ist, jedoch nicht in Ihrem lokalen Zweig.

- Alternative 2:

git checkout -b 'YourBranch' origin/'YourRemote'

Wahrscheinlich ist dies der einfachste Weg.

Javier C.
quelle
9

Angenommen, Ihre Fernbedienung lautet [email protected] und Sie möchten den Zweig random_branch. Der Prozess sollte wie folgt sein:

  1. Überprüfen Sie zuerst die Liste Ihrer Fernbedienungen von

    git remote -v

  2. Wenn Sie die Fernbedienung [email protected] nicht in der Ausgabe des obigen Befehls haben, würden Sie sie um hinzufügen

    git remote add xyz [email protected]

  3. Jetzt können Sie den Inhalt dieser Fernbedienung von abrufen

    git fetch xyz

  4. Überprüfen Sie nun den Zweig dieser Fernbedienung von

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Überprüfen Sie die Filialliste mit

    git branch -a

Der lokale Zweig my_copy_random_branch verfolgt den Zweig random_branch Ihrer Fernbedienung.

zafar142003
quelle
8

git fetch --all & git checkout <branch name>

Jerome Anthony
quelle
7

git fetch && git checkout <your friend's branch name> sollte den Trick machen

Tambakoo
quelle
7

Ich möchte Ihnen einen einzeiligen Befehl zum Abrufen aller Remote-Zweige zu Ihrem lokalen Zweig geben und zu Ihrem gewünschten neu erstellten lokalen Zweig wechseln:

git fetch && git checkout discover

Nachdem Sie den obigen Befehl ausgeführt haben, erhalten Sie die folgende Meldung:

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

In der ersten Zeile steht, dass zu einem neuen Zweig gewechselt wurde - warum neu? Es ist schon da in der Ferne!

Aber eigentlich muss man es auch lokal erstellen. Der Zweig wird aus dem Remote-Index entnommen und lokal für Sie erstellt.

Hier discoverist ein neuer Zweig, der aus dem Remote-Zweig Ihres Repositorys erstellt wurde discover.

Aber die zweite Zeile enthält mehr Informationen als die erste, die uns Folgendes sagt:

Unsere Niederlassung ist so eingerichtet, dass sie eine gleichnamige entfernte Niederlassung verfolgt .

Obwohl git fetch alle Zweige zu lokal holt . Wenn Sie jedoch danach laufen git branch, wird nur eine masterlokale Verzweigung angezeigt. Warum ?

Denn für jeden Zweig, den Sie in Remote haben, müssen Sie ihn auch lokal erstellen, um ihn wie git checkout <branchname>im obigen Beispiel zu verfolgen .

Nachdem Sie den git checkoutBefehl ausgeführt haben, können Sie ihn ausführen git branch, und jetzt können Sie beide Zweige sehen:

  1. Master und 2. entdecken Sie in Ihrem lokalen Eintrag.
Haritsinh Gohil
quelle
7

Wenn Sie alle Remote-Zweige abrufen möchten, geben Sie einfach Folgendes ein:

git fetch --all
Ishwor Khanal
quelle
5

Versuchen Sie einfach:

git pull origin your_branch_name
Rizo
quelle
2
Rizo, git pull origin branch_name sollte die beste Lösung sein. Sie sind die einzige Person, die dies als Lösung veröffentlicht hat, und es hat bei mir funktioniert. Dies funktioniert, da Ihr Zweig mit dem Hauptzweig aktualisiert wird. einfach und unkompliziert.
Ian Poston Framer
3
Das Problem dabei ist, dass versucht wird, diesen Remote-Zweig mit Ihrem CURRENT-Zweig zusammenzuführen, der nicht der Remote-Zweig ist (da dies für Ihr lokales Repo neu ist)
Z. Khullah
Dies wird mit Ihrer aktuellen Niederlassung zusammengeführt.
Eem Jee
4

Wenn Sie ein Repository haben, mit dem geklont wurde, --depth 1funktionieren viele der aufgelisteten Befehle nicht. Zum Beispiel siehe hier

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

In diesem Fall würde ich das Repository erneut klonen, aber vielleicht gibt es andere Techniken, z. B. fehlen bei einem flachen Git-Klon (Klon - Tiefe) entfernte Zweige

Colin D.
quelle
3

Wenn Sie Ihren Remote-Zweig bereits so kennen ...

git remote
=> One
=> Two

und Sie kennen den Filialnamen , den Sie auschecken möchten, z. B. br1.2.3.4 , und tun dies dann

git fetch One
=> returns all meta data of remote, that is, the branch name in question.

Sie müssen nur noch die Filiale auschecken

git checkout br.1.2.3.4

Dann machen Sie neue Zweige daraus.

SoEzPz
quelle
3

Die Schritte sind wie folgt;

  1. git fetch originoder git fetch --all, dies ruft alle Remote-Zweige zu Ihrem lokalen und dann die zweite Option, mit der Sie verfahren können.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Wenn Sie dann an diesem Zweig arbeiten, können Sie durch Eingabe überprüfen, ob Sie sich in diesem Zweig befinden oder nicht

git branch

Es zeigt den Zweig an, in dem Sie sich gerade befinden.

Sam
quelle
2

git branch <name> --track origin/<name>

Chris F. Carroll
quelle
2

Überprüfen Sie Ihre .git/configDatei, insbesondere, welche Nachverfolgung beim Abrufen für diese Fernbedienung vorhanden ist.

[remote "randomRemote"]
    url = [email protected]:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Wenn es heads/*zeigt auf randomRemote/*, wenn Sie ausführen git fetch randomRemote, werden alle Filialen holen.

Dann können Sie einfach diesen Zweig auschecken.

Andernfalls,

  1. Auf diese Weise müssen Sie dem Tracking Remote-Zweige hinzufügen. Überprüfen Sie Ihre .git/confignach dem Ausführen. Du wirst verstehen.

    git remote set-branches --add randomRemote randomBranch
    
  2. Ausführen git fetch randomRemote. Dadurch wird der Remote-Zweig abgerufen.

  3. Jetzt kannst du rennen git checkout randomBranch.

Vamshi Suram
quelle
1

Sie verwenden "Git Pull", um Ihre Zweige getrennt zu halten. Ich werde die tatsächlichen Repository- und Zweigstellennamen verwenden, um zu helfen, da 'lbranch' und 'rbranch' schwer zu entschlüsseln sind.

Verwenden wir:

  • myteam.unfuddle.com = der entfernte Git-Server
  • tlc = Projektkonto entwirren, in dem das Repository vorhanden ist
  • daves_branch = Name des Remote-Zweigs

    Sie oder ein Kollege können dies ausführen, um nur Ihren Zweig zu ziehen, egal wie viele Zweige es gibt:

    git init
    git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    
  • Andrew
    quelle
    0

    Mit einem einfachen Befehl können git checkout remote_branch_nameSie einen lokalen Zweig erstellen, der alle Änderungen im Remote-Zweig enthält.

    Sijeesh
    quelle
    -2
    git checkout -b branch_name
    git pull remote_name branch_name
    
    Leon
    quelle
    3
    Während dieses Snippet die Frage beantworten könnte, ist es besser, eine Erklärung darüber beizufügen, was es tut und wie es sich von der sehr großen Anzahl von Antworten unterscheidet, die bereits hier vorliegen.
    DaveyDaveDave
    2
    Ich persönlich mag diese Option nicht. Denn falls Sie einen neuen Zweig vom Master erstellen und dann Daten vom Remote-Zweig
    abrufen
    Eine Erklärung wäre angebracht.
    Peter Mortensen