¿Cómo clonar una rama específica de Git? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

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?

Author: Steve Chambers, 2009-12-16

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 urlestá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
 313
Author: Michael Krelin - hacker,
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
 6787
Author: Jorge E. Cardona,
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
 223
Author: Edmar Miyake,
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>
 210
Author: superlogical,
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

"

 72
Author: dkinzer,
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

 20
Author: PlanetUnknown,
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.

 12
Author: savgur,
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