Git-Klon verhält sich beim Kopieren des aktuellen Remote-Arbeitszweigs in den lokalen Zweig.
Gibt es eine Möglichkeit, einen bestimmten Zweig selbst zu klonen, ohne den Zweig im Remote-Repository zu wechseln?
git clone --single-branch --branch <branchname> <remote-repo>
Die Option --single-branch
ist ab Version 1.7.1 und höher gültig.
Bitte beachten 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 <branchname> url
aufrufen, rufen Sie alle Zweige ab und checken einen aus. Dies kann zum Beispiel bedeuten, dass Ihr Repository einen 5-KB-Dokumentations- oder Wiki-Zweig und einen 5-GB-Daten-Zweig hat. Und wann immer Sie Ihre Startseite bearbeiten möchten, klonen Sie möglicherweise 5 GB Daten.
Das heißt nicht, dass git clone --branch
nicht der Weg ist, dies zu erreichen. Es ist nur so, dass es nicht immer das ist, was Sie erreichen wollen. wenn Sie nach dem Klonen eines bestimmten Zweigs fragen.
Zum Zeitpunkt des Schreibens der ursprünglichen Antwort unten hatte git keine Option --single-branch
, aber lassen Sie es uns für die volle Zufriedenheit der wütenden Bienen aufbewahren.
Die Antwort, die Copypaster so sehr ablehnten, lautete wie folgt:
git init
git remote add -t refspec remotename Host:/dir.git
git fetch
git clone -b <branch> <remote_repo>
Beispiel:
git clone -b my-branch [email protected]:user/myproject.git
Fügen Sie ab Git 1.7.10 --single-branch
hinzu, um das Abrufen aller Zweige zu verhindern. Beispiel mit OpenCV 2.4 Branch:
git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Hier ist ein wirklich einfacher Weg, es zu tun :)
Klonen Sie das Repository
git clone <repository_url>
Alle Branchen auflisten
git branch -a
Überprüfen Sie die gewünschte Filiale
git checkout <name_of_branch>
So klonen Sie einen Zweig ohne andere Zweige holen:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f Origin $REMOTE_REPO
git checkout $BRANCH
git checkout -b <branch-name> <Origin/branch_name>
in meinem Fall zum Beispiel:
git branch -a
* master
Origin/HEAD
Origin/enum-account-number
Origin/master
Origin/rel_table_play
Origin/sugarfield_customer_number_show_c
m also einen neuen Zweig zu erstellen, der auf meinem Enum-Account-Nummer-Zweig basiert, mache ich:
git checkout -b enum-account-number Origin/enum-account-number
Nachdem Sie die Eingabetaste gedrückt haben, passiert Folgendes:
Branch enum-account-number set up to track remote branch refs/remotes/Origin/enum-account-number.
Switched to a new branch "enum-account-number
"
Erstellen Sie auf dem lokalen System einen Zweig mit diesem Namen. z.B. Angenommen, Sie möchten den Zweig mit dem Namen "branch-05142011" erhalten
git branch branch-05142011 Origin/branch-05142011
Sie erhalten eine Meldung wie: "Branch Branch-05142011 wurde so eingerichtet, dass Remote Branch Branch-05142011 von Origin verfolgt wird."
Jetzt checkt einfach den Zweig wie unten und ihr habt den Code -git checkout branch-05142011
git --branch <branchname> <url>
Aber die Bash-Vervollständigung erhält diesen Schlüssel nicht: --branch
Genießen.