Escenario
Tienes tu proyecto en un repositorio de github.com con dos ramas (master y foo) y quieres clonarlas a tu disco duro.
Solución
git clone git@github.com:usuario/proyecto.git
Con esto obtendremos la rama principal (master).
git fetch
git checkout --track -b foo origin/foo
Y con esto otro la rama foo.
¿Conocéis alguna forma más sencilla? En este caso tenemos dos ramas, pero si hubiese N+1, ¿tendremos que descargar todas una a una?
The Power of Mind es el blog personal de DraXus, orientado a temas de Informática, Software Libre e Internet. Más sobre el autor…
Cuando haces el git clone, ya tienes todo el repositorio localmente.
Ese git fetch sobraría (salvo que en el instante entre el clone y el fetch, se hubiesen creado nuevas ramas en el repositorio remoto clonado).
Haciendo git branch -a, ves todas.
Para trabajar localmente, te obliga a crearte una branch local. Las origin/* son referencias a ramas remotas que no deben de ser modificadas (por eso no te deja trabajar sobre ellas y tienes que hacer el branch local) para poder luego pushear a ellas. git push origin/foo my_foo (o si las creas con track, ni hace falta señalar los nombres explícitamente)
Ah, vale. Intenté hacer git checkout foo y claro, me decía que no existía. Entonces, si hubiese creado la rama y luego hago el checkout ya la tendría como en el repositorio, ¿no?
Gracias!
git checkout origin/foo, sí. Pero si quieres seguir trabajando con git, deberías hacer el git co -b nombre_que_sea origin/foo