todas - ¿Cómo clonar una rama Git específica?
ver ramas git (7)
Aquí hay una manera muy simple de hacerlo :)
Clonar el repositorio
git clone <repository_url>
Listar todas las ramas
git branch -a
Revisa la sucursal que quieras.
git checkout <name_of_branch>
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo puedo clonar una sola rama en Git? 14 respuestas
El clon de Git se comportará copiando la rama de trabajo actual remota en local.
¿Hay alguna forma de clonar una rama específica sin cambiar de rama en el repositorio remoto?
Cree una rama en el sistema local con ese nombre. por ejemplo, digamos que desea obtener la rama llamada "branch-05142011"
git branch branch-05142011 origin/branch-05142011
Le dará un mensaje como: "Branch branch-05142011 configurado para rastrear la sucursal remota-05142011 desde el origen".
Ahora solo revisa la rama como abajo y tienes el código -
git checkout branch-05142011
Para clonar una rama sin buscar otras ramas:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
Por favor, vea también la otra respuesta que muchas personas prefieren.
También es posible que desee asegurarse de entender la diferencia, a diferencia de la mayoría de los comentaristas enojados y los que votan a la baja. Y la diferencia es: al invocar git clone -b branch url
, estás recogiendo todas las ramas y comprobando una. Esto puede significar, por ejemplo, que su repositorio tiene una documentación de 5kB o una rama wiki y una rama de datos de 5GB. Y cuando quiera editar su página de inicio, puede terminar clonando 5GB de datos.
Una vez más, eso no quiere decir que git clone -b
no sea la forma de lograrlo, es solo que no siempre es lo que quieres lograr cuando estás preguntando sobre la clonación de una rama específica.
La respuesta que escribiría hoy, con el git de hoy en mente sería
git clone --single-branch -b branch host:/dir.git
Al momento de escribir la respuesta original a continuación, git no tenía la --single-branch
, pero --single-branch
para la plena satisfacción de las abejas enojadas.
La respuesta tan desagradable para los copypasters fue esta:
git init
git remote add -t refspec remotename host:/dir.git
git fetch
git --branch <branchname> <url>
Pero la finalización de bash no recibe esta clave: --branch
Disfrutar.
git checkout -b <branch-name> <origin/branch_name>
por ejemplo en mi caso:
git branch -a
* master
origin/HEAD
origin/enum-account-number
origin/master
origin/rel_table_play
origin/sugarfield_customer_number_show_c
Así que para crear una nueva rama basada en mi rama enum-account-number, hago:
git checkout -b enum-account-number origin/enum-account-number
Después de pulsar regresar, ocurre lo siguiente:
Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number
"
git clone -b <branch> <remote_repo>
Ejemplo:
git clone -b my-branch [email protected]:user/myproject.git
Con Git 1.7.10 y versiones posteriores, agregue --single-branch
para evitar la obtención de todas las sucursales. Ejemplo, con rama OpenCV 2.4:
git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git