Hoe kloon ik een specifieke Git branch?

Git clone zal zich gedragen als het kopiëren van de huidige werk branch naar de lokale.

Is er een manier om zelf een specifieke branch te clonen zonder branches te wisselen op het remote repository?

git clone -b  

Voorbeeld:

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

Met Git 1.7.10 en later, voeg --single-branch toe om het ophalen van alle branches te voorkomen. Voorbeeld, met OpenCV 2.4 branch:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Commentaren (10)
Oplossing
git clone --single-branch --branch  

De --single-branch optie is geldig vanaf versie 1.7.10 en later.

Zie ook het andere antwoord waar veel mensen de voorkeur aan geven.

Misschien wilt u er ook zeker van zijn dat u het verschil begrijpt. En het verschil is: door git clone --branch url aan te roepen, haal je alle branches op en check je er één uit. Dat kan bijvoorbeeld betekenen dat je repository een 5kB documentatie of wiki branch heeft en 5GB data branch. En wanneer je je voorpagina wilt bewerken, kan het zijn dat je 5GB data moet clonen.

Nogmaals, dat wil niet zeggen dat git clone --branch niet de manier is om dat te bereiken, het is alleen dat het niet altijd is wat je wilt bereiken, als je vraagt naar het klonen van een specifieke tak.

Ten tijde van het schrijven van het originele antwoord hieronder, had git geen -single-branch optie, maar laten we die behouden voor volledige tevredenheid van boze bijen.

Het antwoord dat zo erg verafschuwd werd door copypasters was dit:

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

Maak een tak aan op het lokale systeem met die naam. stel dat je bijvoorbeeld de tak genaamd "tak-05142011" wilt hebben

git branch branch-05142011 origin/branch-05142011

Het'zal je een boodschap geven zoals - "Tak branch-05142011 ingesteld om remote branch branch-05142011 te volgen van origin."

Nu gewoon de branch checkout zoals hieronder en je hebt de code - git checkout tak-05142011

Commentaren (5)