Cómo añadir ramas remotas en git si clonaste con –depth o –single-branch

Supongamos que tengo un repo gigantesco y quiero descargar solo 100 commits para clonar más rápido:

$ git clone --branch 9.0 --depth 100 https://github.com/odoo/odoo.git

Guay, pero ahora necesito 100 commits de la rama 10.0 también para poder cambiar a ella. Normalmente haría:

$ git fetch --depth 100 origin 10.0
$ git checkout 10.0

Pero me encuentro con que el checkout no funciona como era de esperar… ¿Qué hago?

Por qué sucede

Si no hubiéramos clonado con --depth 100, la cosa funcionaría así:

$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/10.0
  remotes/origin/HEAD -> origin/9.0

Pero al haber clonado con --depth 100, nos encontramos que tras el fetch no existe la rama remota 10.0 que supuestamente hemos descargado:

$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/HEAD -> origin/9.0

Esto es así porque clonaste con --depth o con --single-branch (que es implícito al usar --depth), git queda preconfigurado para ignorar cualquier rama remota que no sea la que le indicaste al clonar (o la principal — normalmente master — si no le indicaste ninguna).

Cómo solucionarlo

Por lo tanto, si ahora queremos también detectar cambios en la rama remota 10.0, hay que decírselo explícitamente a git:

$ git remote set-branches --add origin 10.0
$ git fetch --depth 100 origin 10.0
$ git branch --all
* 9.0
  remotes/origin/9.0
  remotes/origin/10.0
  remotes/origin/HEAD -> origin/9.0

Tras eso, ya podemos crear una rama local 10.0 que apunte a origin/10.0, que con un comando sería:

$ git checkout --branch 10.0 origin/10.0
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s