¿Cómo clonar una rama específica de Git? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo clono una sola rama en Git? 14 respuestas
Git clone se comportará copiando la rama de trabajo actual remota en local.
¿Hay alguna manera de clonar una rama específica por mí mismo sin cambiar ramas en el repositorio remoto?
7 answers
Por favor vea también la otra respuesta que mucha gente prefiere.
Es posible que también quieras asegurarte de entender la diferencia, a diferencia de la mayoría de los comentaristas enojados y los downvoters. Y la diferencia es: invocando git clone -b branch url
estás buscando todas las ramas y comprobando una. Eso puede, por ejemplo, significar que su repositorio tiene una rama de documentación o wiki de 5kB y una rama de datos de 5GB. Y cada vez que desee editar su página principal, puede terminar clonando 5 GB de datos.
De nuevo, eso no quiere decir que git clone -b
no es la manera de lograr eso, es solo que no es siempre lo que quieres lograr, cuando estás preguntando acerca de 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
En el momento de escribir la respuesta original a continuación, git no tenía ninguna opción --single-branch
, pero vamos a conservarla para la plena satisfacción de angry bees.
La respuesta que tanto disgustó a los copypasters fue esto:
git init
git remote add -t refspec remotename host:/dir.git
git fetch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-29 11:02:17
git clone -b <branch> <remote_repo>
Ejemplo:
git clone -b my-branch [email protected]:user/myproject.git
Con Git 1.7.10 y posteriores, agregue --single-branch
para evitar la obtención de todas las ramas. Ejemplo, con OpenCV 2.4 branch:
git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-11 17:09:13
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-06 09:01:00
Aquí está una manera realmente simple de hacerlo:)
Clonar el repositorio
git clone <repository_url>
Lista todas las ramas
git branch -a
Comprueba la rama que deseas
git checkout <name_of_branch>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-14 09:42:19
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 lo hago:
git checkout -b enum-account-number origin/enum-account-number
Después de pulsar return sucede 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
"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-15 19:59:19
Cree una rama en el sistema local con ese nombre. por ejemplo, digamos que desea obtener la rama llamada "rama-05142011"
git branch branch-05142011 origin/branch-05142011
Te dará un mensaje como - "Branch branch-05142011 set up to track remote branch branch-05142011 from origin."
Ahora solo tienes que checkear la rama como abajo y tienes el código -git checkout branch-05142011
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-15 19:20:32
git --branch <branchname> <url>
Pero la finalización de bash no obtiene esta clave: --branch
Disfruta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-07 12:52:15