2010-02-06 27 views
6

Estoy teniendo un gran éxito con git push --mirror para hacer copias de seguridad en un repositorio simple. Pero después de buscar en SO y en otros lugares, no puedo encontrar una manera de clonar la cosa localmente con en todas las sucursales. No quiero usar git clone ya que no quiero que mi repo local sepa sobre el repositorio desnudo. Si uso git pull, solo baja la rama HEAD.Opuesto a `git push --mirror`? ¿Cómo recupero mi repo?

Adivinar:

git pull /data/Dropbox/backup/that_stuff.git * 

me lleva a ninguna parte, por supuesto.

¿Cómo obtengo todo el repositorio con todas las sucursales de nuevo? Me doy cuenta de que probablemente podría simplemente copiar el repositorio desnudo a mi directorio .git, pero eso parece una mala idea.

+0

así que supongo que el 'bundle' git desde hace 2 semanas ya no es de su agrado? (http://stackoverflow.com/questions/2129214/backup-a-local-git-repository/2129286#2129286) – VonC

+1

@VonC muchas gracias por eso. Aunque respondiste la pregunta con pericia, resulta que tiene poco sentido realizar una copia de seguridad en un paquete GIT en un DropBox. Agrega demasiado tráfico (al servidor) y no tiene ninguna ventaja. MIrror también es mucho más rápido. Ahora, si pudiera resolver este último problema :) –

+0

¿Acabo de completar mi respuesta con el '' * ''correcto que buscaba? – VonC

Respuesta

2

Trate git fetch en lugar de git pull

Desde git pull está allí a buscar una rama y fusionarla a una sucursal local, que no tendría mucho sentido tratar de fusionar todas sucursales remotas a una ramas locales.

$ git fetch a-repo_url 

El comando anterior copia todas las ramas de la distancia refs/heads/ espacio de nombres y los almacena en el espacio de nombres local de refs/remotes/remoteRpo/, branch.<name>.fetch menos que la opción se utiliza para especificar un refspec no predeterminada..
Probar:

$ git fetch a-repo-url +refs/heads/*:refs/heads/* 

podría obligar a ir a buscar a todos los jefes de todas las ramas.
Ver esto SO question.


El PO yar informes:

git pull /data/Dropbox/backup/mjdj.git/ +refs/heads/*:refs/heads/* 

obras.

+0

Probé eso. GIT responde '* branch HEAD -> FETCH_HEAD ' ... así que simplemente obtiene esa. –

+0

Intenté con el último asterisco ... fatal: me niego a buscar en la rama actual refs/heads/master del repositorio no vacío –

+0

@yar: Tal vez necesite una referencia remota (http://www.kernel.org/ pub/software/scm/git/docs/git-remote.html), pero eso significaría "hacer que su repositorio local sepa sobre el repositorio simple", que no es lo que usted desea. – VonC

-1

Puede lograrlo con git-copy.

git copy /data/Dropbox/backup/that_stuff.git that_stuff.git