Wie lade ich einen Zweig mit git herunter?

214

Ich habe ein Projekt auf GitHub gehostet. Ich habe einen Zweig auf einem Computer erstellt und dann meine Änderungen an GitHub übertragen mit:

git push origin branch-name

Jetzt bin ich auf einem anderen Computer und möchte diesen Zweig herunterladen. Also habe ich versucht:

git pull origin branch-name

... aber alles, was dies getan hat, war, meinen Hauptzweig mit den Änderungen in meinem neuen Zweig zu überschreiben.

Was muss ich tun, um meinen Remote-Zweig ordnungsgemäß abzurufen, ohne vorhandene Zweige zu überschreiben?

Andrew
quelle

Antworten:

375

Dank einer verwandten Frage stellte ich fest, dass ich den Remote-Zweig als neuen lokalen Zweig "auschecken" und einen neuen lokalen Zweignamen angeben muss.

git checkout -b newlocalbranchname origin/branch-name

Oder Sie können tun:

git checkout -t origin/branch-name

Letzteres erstellt einen Zweig, der auch so eingestellt ist, dass er den Remote-Zweig verfolgt.


Update: Es ist 5 Jahre her, seit ich diese Frage ursprünglich gestellt habe. Ich habe viel gelernt und Git hat sich seitdem verbessert. Mein üblicher Workflow ist jetzt etwas anders.

Wenn ich die Remote-Zweige abrufen möchte, führe ich einfach Folgendes aus:

git pull

Dadurch werden alle Remote-Zweige abgerufen und der aktuelle Zweig zusammengeführt. Es wird eine Ausgabe angezeigt, die ungefähr so ​​aussieht:

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

Jetzt weiß Git von meinem neuen my-bugfix-branch. Um zu diesem Zweig zu wechseln, kann ich einfach Folgendes ausführen:

git checkout my-bugfix-branch

Normalerweise müsste ich den Zweig erstellen, bevor ich ihn auschecken kann, aber in neueren Versionen von git ist es klug genug zu wissen, dass Sie eine lokale Kopie dieses Remote-Zweigs auschecken möchten .

Andrew
quelle
Ich verwende GIT 1.7.2.5 und der Befehl, der für mich funktioniert hat, war : git branch --track XX origin/XX. Ihr Befehl gibt mir einen Fehler.
dimitarvp
8
Wenn Sie nicht alle Remote-Zweige heruntergeladen haben, schlägt dies möglicherweise fehl. Führen Sie "git remote update" aus, um sie herunterzuziehen.
Ben Walding
1
Tatsächlich kann es sogar noch kürzer sein "git checkout branch-name". Wenn der Filialname mit einem Remote-Tracking-Zweig identisch ist (dh Ursprung / Filialname), handelt es sich automatisch um einen lokalen Tracking-Zweig.
DavidN
64

Für alle Git-Neulinge wie mich können Sie die folgenden Schritte ausführen, um ein Remote-Repository herunterzuladen und dann zu dem Zweig zu wechseln, den Sie anzeigen möchten. Sie missbrauchen Git wahrscheinlich auf irgendeine Weise, aber es hat den Job für mich gemacht! :-)

Klonen Sie das Repository, für das Sie den Code herunterladen möchten (in diesem Beispiel habe ich das LRResty-Projekt auf Github ausgewählt):

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

Überprüfen Sie, welchen Zweig Sie zu diesem Zeitpunkt verwenden (es sollte der Hauptzweig sein):

$ git branch    
* master

Schauen Sie sich den gewünschten Zweig an, in meinem Fall heißt er "arcified":

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

Bestätigen Sie, dass Sie jetzt den gewünschten Zweig verwenden:

$ git branch    
* arcified
  master

Wenn Sie den Code später erneut aktualisieren möchten, führen Sie Folgendes aus git pull:

$ git pull
Already up-to-date.
Dan J.
quelle
"Sie missbrauchen Git wahrscheinlich auf irgendeine Weise" - nein, das ist genau richtig.
Big McLargeHuge
27

Sie könnten Git Remote verwenden wie:

git fetch origin

und richten Sie dann einen lokalen Zweig ein, um den Remote-Zweig wie folgt zu verfolgen:

git branch --track [local-branch-name] origin/remote-branch-name

Sie hätten jetzt den Inhalt des Remote-Github-Zweigs in local-branch-name.

Sie können zu diesem lokalen Zweigstellennamen wechseln und mit der Arbeit beginnen:

git checkout [local-branch-name]
ardsrk
quelle
17

Sie können verwenden:

git clone <url> --branch <branch>

um nur den Inhalt des Zweigs zu klonen / herunterzuladen.

Dies war besonders hilfreich für mich, da sich der Inhalt meines Zweigs völlig vom Hauptzweig unterschied (obwohl dies normalerweise nicht der Fall ist). Daher haben mir die von anderen oben aufgeführten Vorschläge nicht geholfen, und ich würde am Ende eine Kopie des Masters erhalten, selbst nachdem ich den Zweig ausgecheckt und einen Git-Pull durchgeführt hatte.

Dieser Befehl gibt Ihnen direkt den Inhalt des Zweigs. Es hat bei mir funktioniert.

Alter Markus
quelle
1
Dies ist die beste Antwort. Einfach und effektiv.
Derek
2
Dies scheint bei mir nicht zu funktionieren. Es heißt, es gibt bereits einen Ordner mit diesem Namen (den es natürlich gibt)
Jonathan Tuzman
1
@ Jonathan Es wird kein neuer Zweig an Ihren vorhandenen angehängt. Es kann nur zum Klonen einer neuen Kopie verwendet werden. Ich verstehe nicht, warum es bereits einen Ordner mit diesem Namen geben sollte, wenn Sie das Repository noch nicht geklont haben. Versuchen Sie, an einem anderen Ort zu klonen.
Alter Markus
Aktualisiert kein bestehendes Projekt mit neuem Zweig
Dazzle
16

Navigieren Sie zu dem Ordner auf Ihrem neuen Computer, den Sie von git on git bash herunterladen möchten.

Verwenden Sie den folgenden Befehl, um den Code von einem beliebigen Zweig herunterzuladen

git clone 'git ssh url' -b 'Branch Name'

Es wird der entsprechende Zweigcode heruntergeladen.

Srikanta Sahoo
quelle
9

Git-Klon und CD im Repo-Namen:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

Wechseln Sie zu dem Zweig (einer GitHub-Seite), den ich möchte:

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

Und zieh den Ast:

$ git pull
Already up-to-date.

ls:

$ ls
index.html      params.json     stylesheets
Pablo Ezequiel
quelle
0

Git Checkout -b Zweig / Name

Git Pull Origin Zweig / Name

Blenden
quelle
0

Du kannst es versuchen

git fetch <remoteName> <branchName>

Z.B:

git fetch origin MyRemoteBranch
Bimzee
quelle
-8

Erstellen Sie ein neues Verzeichnis und führen Sie stattdessen einen Klon durch.

Git-Klon (Herkunftsadresse) (Name des Zweigs)

Seisatsu
quelle
3
Sie können nicht nur einen Zweig in Git klonen . Es kann nur ein vollständiger Repository-Klon erstellt werden.
Alan Haggai Alavi