Git no clona todas las twigs en clones posteriores?

Tengo algunos problemas con Git al usar repositorys y twigs clonados y de alguna manera no es posible para mí encontrar una respuesta a esto. Permítanme describirlo: tenemos un repository básico de Git desnudo de donde todos sacamos y empujamos, ubicado en una máquina Linux local y accesible con ssh. Hice una copy de esto en mi memory USB de esta manera:

git clone ssh://adahl@gollum//net/repos/netcube/patches.git 

Esto me da, por supuesto, un clon local con una copy de trabajo en mi memory USB. Ced esto y veo algunas twigs en este clon, entonces:

 cd patches git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/stable 

Hasta ahora, todo bien, sin embargo, si clono el repository en mi memory USB, en otro momento mi notebook se pierde. Ver:

 cd .. git clone patches patches2 cd patches2 git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master 

Intenté varias opciones al clonar o una git fetch después de la clonación, pero nada lleva la twig estable al repository de patches2 . Supongo que tengo una falta de comprensión aquí y simplemente la uso de la manera incorrecta. ¿Podría alguien señalarme mi error de uso y / o comprensión?

Consulte Cómo clonar todas las sucursales remotas en Git?

Debe crear una sucursal local basada en la sucursal remota si realmente desea que se incluya en un clon. Sin embargo, como no trabajas en sucursales remotas, crearás twigs locales tan pronto como comiences a trabajar en una sucursal. Y antes de eso, realmente no lo necesita en su clon, ya que simplemente puede searchlo desde el control remoto en cualquier momento.

Sin embargo, si el portátil no tiene conectividad de networking, deberá crear sucursales locales para todas las sucursales remotas que desee, de modo que se clonen al clonar el repository local.

Sin embargo, si tiene conectividad de networking, use git remote add origin2 ssh://adahl@gollum//net/repos/netcube/patches.git y luego git fetch origin2 – siéntase libre de replace origin2 con un nombre más significativo.

Además de @ThiefMaster:

me gusta

 git clone --mirror 

o

 git push --mirror 

para actualizar todas las references y tags (locales y remotas)

Información adicional Como se mencionó, –mirror realmente replicará el repository tal como está, por lo tanto, se sobrescribirán los cambios en el destino. Las twigs que no existen en la fuente serán eliminadas incondicionalmente.

Básicamente, es como trabajar con un control remoto y hacer la 'actualización remota de git – run', con la diferencia de que las twigs afectadas pueden ser sucursales locales así como references 'remotas' [1]

@LeSpocky (y otros?)

Ahora, si los cambios desaparecen, nunca generarán problemas de combinación, por lo que es fácil.

--mirror lleva el nombre del concepto de la vida real, por lo que fue diseñado para allanar cualquier diferencia en el objective. Si el objective no está vacío y se han confirmado los cambios locales, siempre puede recuperarlos a través del reflog de la sucursal local del objective ( git log -g , git reflog ).

Como medida de security general, podría tener un gancho para 'save git stash' en el objective .

Sin embargo, tenga en count que –mirror fue diseñado para, bueno, mirror y esta pregunta era, de hecho, sobre cómo replicar todas las twigs a un control remoto simple. 🙂

[1] (los refs están ahí, pero las definiciones remotas no se copyn; si lo desea, haga una copy manual desde .git / config a .git / config en el destino de inserción)

"origen" es el nombre pnetworkingeterminado dado al lugar desde el que clonaste el repository, que se agrega automáticamente como un control remoto (nota: el control remoto solo significa "un repository no el actual" – los controles remotos pueden estar en la misma máquina).

En patches , "origen" se refiere al repository original en gollum.

En patches2 , "origen" se refiere a patches .

Las references de seguimiento remoto (las que comienzan con remotes/ ) no son en realidad sucursales locales, sino que son solo indicadores de la última vez que se sabía que las twigs estaban en el control remoto. Por lo tanto, en los patches , tiene references de rastreo remotas para el repository original, pero en patches2 , solo tiene una reference de seguimiento remoto para la twig master local en patches , porque es patches2 donde patches2 el origen de patches2 .

Puede usar git remote add para agregar el repository original como otro control remoto en patches2 después de patches2 , o puede clonar nuevamente desde el repository original en lugar de hacerlo desde patches .

 $ git remote update $ git pull --all