Cómo funciona la clonación de git

Tengo un repository en Github con 2 twigs: master y develop .

Cuando clono el repository y ejecuto la $ git branch , solo se muestra la twig master .
Si ejecuto $ git branch -a puedo ver todas las sucursales remotas.

Ahora, si desarrollo un $ git checkout develop , recibo el post:

Desarrollo de sucursales para rastrear sucursales remotas desarrolladas desde el origen.
Cambiado a una nueva twig 'desarrollar'

¿Lo que realmente pasó? ¿Se obtuvieron las confirmaciones de la twig de develop remoto cuando ejecuté la $ git clone remote-url , o cuando ejecuté: $ git checkout develop , o ninguna?

¿Tengo que hacer un desarrollo de $ git pull origin develop después de verificar develop , o ya está hecho?

Por favor, ayúdame a entender cómo funciona el clone cuando hay múltiples twigs en el control remoto.

git clone busca todas las twigs remotas, pero solo crea una twig local, master , para ti. Entonces, cuando ejecute git branch -a , verá algo como esto:

 $ git branch -a * master remotes/origin/HEAD remotes/origin/develop remotes/origin/master 

lo que significa que tiene un master sucursal local y varias sucursales remotas. Cuando ejecutó git checkout develop , git crea otra twig local para rastrear el origin/develop remoto de la sucursal. git intenta sincronizar las twigs de seguimiento, por lo que no tiene que hacer otra pull después de la check out .

Si las terminologías de las sucursales locales y remotas le parecen confusas, puede navegar a través de este documento . Tiene algunas buenas figuras para ayudarlo a comprenderlas, y cómo las sucursales locales y remotas se mueven cuando realiza más compromisos.

Puede encontrar esta respuesta útil: ¿Cómo clonar todas las sucursales remotas en Git? , la primera respuesta.

git clone primero crea un nuevo repository vacío. (como git init )

Luego establece el repository dado como un control remoto llamado "origen". ( git remote add )

El trabajo principal lo realiza git fetch , que es el único command que habla con otros repositorys. Transfiere todos los commits del repository remoto al repository actual y crea dentro de sus twigs de repository locales comenzando con "remote / origin /" correspondiente con las twigs en el repository remoto.

Si tiene un repository pnetworkingeterminado no desnudo, también llamará a la git checkout para que se registre, por lo general, en la twig principal.

Si llama a la git branch -r , le mostrará las twigs "remotas", es decir, aquellas sucursales en su repository, que se actualizarán con la git fetch . (Nunca trabajas en esto directamente).

Siempre que desee trabajar en una sucursal, utilice la git checkout que creará una copy de esa bifurcación, sin el prefijo "remote / origin /". Esas son las sucursales "locales" en las que trabaja. (la git branch mostrará esos).

Casi todo lo que haces involucrará solo tu repository local. La única exception es git push , que es el único command para actualizar repositorys remotos, y git fetch que es el único command para consultar otros repositorys.

git pull es solo la combinación de git fetch y git merge . La primera busca cambios y actualizaciones remotas / origen / * y la segunda fusiona esos cambios en su sucursal local.

git clone recupera todas las twigs del repository de forma pnetworkingeterminada. Si desea verificar todas las sucursales , necesita clonar una copy vacía del repository, desarmar la bandera desnuda y restablecerla . Avíseme si tiene más problemas.

Cuando clones un repository obtendrás todas las twigs y todos los commits que se puedan alcanzar desde cualquiera de esas twigs.

Sin embargo, no obtendrá una sucursal local de ninguna otra twig que no sea maestra. Los otros están allí como sucursales remotas (remotos / origen / desarrollo) y puede ver cualquiera de ellos cuando lo desee. git luego configurará el seguimiento entre la sucursal remota y la local que usted creó cuando hizo la extracción.