¿Cómo puedo clonar una rama Git específica?

Git clone se comportará copiando la rama de trabajo actual remota en la local.

¿Hay alguna manera de clonar una rama específica por mí mismo sin cambiar de rama en el repositorio remoto?

git clone -b  

Ejemplo:

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

Con Git 1.7.10 y posteriores, añade --single-branch para evitar la obtención de todas las ramas. Ejemplo, con la rama OpenCV 2.4:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Comentarios (10)
Solución
git clone --single-branch --branch  

La opción --single-branch es válida a partir de la versión 1.7.10 y posteriores.

Por favor, vea también la otra respuesta que mucha gente prefiere.

También puedes asegurarte de que entiendes la diferencia. Y la diferencia es: al invocar git clone --branch url estás obteniendo todas las ramas y comprobando una. Eso puede significar, por ejemplo, que tu repositorio tiene una rama de documentación o wiki de 5kB y una rama de datos de 5GB. Y cada vez que quiera editar su página de inicio, puede terminar clonando 5GB de datos.

De nuevo, esto no quiere decir que git clone --branch no sea la manera de conseguirlo, es sólo que no es siempre lo que quieres conseguir, cuando estás preguntando por la clonación de una rama específica.

En el momento de escribir la respuesta original, git no tenía la opción --single-branch, pero vamos a conservarla para satisfacción de las abejas enfadadas.

La respuesta que tanto disgustaba a los copiadores era ésta:

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

Cree una rama en el sistema local con ese nombre. Por ejemplo, digamos que quiere obtener la rama llamada "branch-05142011"

git branch branch-05142011 origin/branch-05142011

Te dará un mensaje como - "Branch branch-05142011 set up to track remote branch-05142011 from origin."

Ahora sólo tienes que hacer checkout de la rama como abajo y ya tienes el código - git checkout rama-05142011

Comentarios (5)