Come faccio a clonare un ramo specifico di Git?

Git clone si comporterà copiando il ramo di lavoro corrente remoto in locale.

C'è un modo per clonare un ramo specifico da solo senza cambiare ramo sul repository remoto?

git clone -b  

Esempio:

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

Con Git 1.7.10 e successivi, aggiungere --single-branch per prevenire il fetching di tutti i rami. Esempio, con il ramo OpenCV 2.4:

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

L'opzione --single-branch è valida dalla versione 1.7.10 in poi.

Si veda anche la altra risposta che molti preferiscono.

Potresti anche voler essere sicuro di capire la differenza. E la differenza è: invocando git clone --branch url si recuperano tutti i rami e se ne controlla uno. Questo può, per esempio, significare che il tuo repository ha un ramo documentazione o wiki da 5kB e un ramo dati da 5GB. E ogni volta che vuoi modificare la tua frontpage, potresti finire per clonare 5GB di dati.

Di nuovo, questo non vuol dire che git clone --branch non sia il modo per realizzarlo, è solo che non è sempre quello che si vuole realizzare, quando si chiede di clonare un ramo specifico.

Al momento di scrivere la risposta originale qui sotto, git non aveva l'opzione --single-branch, ma conserviamola per la piena soddisfazione delle api arrabbiate.

La risposta tanto odiata dai copiatori era questa:

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

Creare un ramo sul sistema locale con quel nome. ad esempio diciamo che si vuole ottenere il ramo chiamato "branch-05142011"

git branch-05142011 origin/branch-05142011

Ti darà un messaggio come - "Branch branch-05142011 impostato per tracciare il ramo remoto branch-05142011 da origin."

Ora basta fare il checkout del ramo come qui sotto e hai il codice - git checkout ramo-05142011

Commentari (5)