Wie kann ich einen bestimmten Git-Zweig klonen?

Git clone wird sich so verhalten, dass der aktuelle Arbeitszweig in den lokalen Zweig kopiert wird.

Gibt es eine Möglichkeit, einen bestimmten Zweig selbst zu klonen, ohne die Zweige des entfernten Repositorys zu wechseln?

git clone -b  

Beispiel:

git clone -b my-branch git@github.com:user/myproject.git

Bei Git 1.7.10 und später, fügen Sie --single-branch hinzu, um das Holen aller Zweige zu verhindern. Beispiel, mit OpenCV 2.4 Zweig:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Kommentare (10)
Lösung
git clone --single-branch --branch  

Die Option --single-branch ist gültig ab Version 1.7.10 und später.

Bitte lesen Sie auch die andere Antwort, die viele Leute bevorzugen.

Vielleicht möchten Sie auch sicherstellen, dass Sie den Unterschied verstehen. Und der Unterschied ist: wenn Sie git clone --branch url aufrufen, holen Sie alle Zweige und checken einen aus. Das kann z.B. bedeuten, dass Ihr Repository einen 5kB Dokumentations- oder Wiki-Zweig und einen 5GB Daten-Zweig hat. Und immer wenn Sie Ihre Startseite bearbeiten wollen, kann es sein, dass Sie 5 GB an Daten klonen müssen.

Das soll wiederum nicht heißen, dass git clone --branch nicht der richtige Weg ist, um das zu erreichen, es ist nur nicht immer das, was Sie erreichen wollen, wenn Sie nach dem Klonen eines bestimmten Zweiges fragen.

Zum Zeitpunkt des Schreibens der ursprünglichen Antwort unten hatte Git keine --single-branch Option, aber wir wollen sie zur vollen Zufriedenheit der wütenden Bienen beibehalten.

Die Antwort, die von den Kopierern so sehr missbilligt wurde, war diese:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
Kommentare (3)

Erstellen Sie eine Verzweigung auf dem lokalen System mit diesem Namen. z.B. sagen Sie, Sie möchten die Verzweigung mit dem Namen "branch-05142011" erhalten

git branch branch-05142011 origin/branch-05142011

Sie erhalten eine Meldung wie - "Zweig branch-05142011 eingerichtet, um den entfernten Zweig branch-05142011 von origin zu verfolgen."

Jetzt checken Sie den Zweig aus wie unten und Sie haben den Code - git checkout branch-05142011

Kommentare (5)