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