2012-09-10 14 views
8

Este problema no es el mismo que git - how to mirror file from other repo o How do I update my bare repo?Cómo cambiar un repositorio git clonado con --bare para que coincida con uno clonado con --mirror?

Desde un repositorio clonado con --mirror es un repositorio desnudo, puedo hacer que un repositorio clonado con --bare ser como uno clonado con --mirror? ¿Se puede hacer simplemente modificando el archivo de configuración?

Si no, ¿hay algún otro método que pueda convertir un repositorio vacío en un repositorio espejo?

Otra pregunta, ¿Por qué no puedo usar git push --todo en un repo espejo, mientras que este comando se puede ejecutar en un repositorio desnudo?

+2

Puede editar el archivo de configuración trivialmente en cualquier editor. Simplemente haga que las derivaciones hagan referencia a la forma en que están en un repositorio espejo (+ refs/*: refs/*), elimine las ramas de seguimiento remoto (de packed-refs y refs/remote/*/*), agregue 'mirror = true' , y vuelva a ejecutar un 'git fetch'. – fork0

+0

@ fork0 esta operación trivial no parece funcionar ... – thinke365

+0

exactamente lo que no funciona? ¿Error de mensajes? (Por cierto, no mencioné en qué sección se agrega 'mirror = true '. Es' [core] '). – fork0

Respuesta

2

Si ha clonado su repositorio con git clone --mirror, entonces git push --all, siguiendo el default matching push policy, enviará todas las sucursales locales al repositorio remoto.

Pero si tu repositorio remoto ha sido añadido a tu repositorio local como una referencia remota (es decir, tu repositorio local se ha clonado a partir de otra repo a distancia), entonces un git push --all secondRemoteRepo no encontrará muchas rama correspondiente a empujar a, a menos que primero busques esas ramas.
así que esto debería funcionar:

git fetch secondRemoteRepo 
git push --all secondRemoteRepo 
8

Para cambiar un repositorio clonado con git clone --bare en uno que coincide con lo que sería con un git clone --mirror, haga lo siguiente:

$ git config remote.origin.fetch "+refs/*:refs/*" 
$ git config remote.origin.mirror true 

luego hacer un todo git fetch y debe estar actualizado.

0

la actualidad:

git remote add --mirror=fetch origin <url> 

Entonces

git fetch 
Cuestiones relacionadas