2010-02-06 1 views
6

J'ai beaucoup de succès avec git push --mirror pour faire des copies de sauvegarde à un repo nu. Mais après recherche sur SO et ailleurs, je ne peux pas trouver un moyen de cloner la chose localement avec toutes les branches. Je ne veux pas utiliser git clone puisque je ne veux pas que mon représentant local connaisse le repo nu. Si j'utilise git pull, il ne fait que baisser la branche HEAD.En face de `git push --mirror`? Comment puis-je récupérer mon repo?

Deviner:

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

me mène nulle part, bien sûr.

Comment puis-je récupérer l'ensemble du repo avec toutes les branches? Je me rends compte que je pourrais probablement copier le repo nu dans mon répertoire .git, mais cela semble être une mauvaise idée.

+0

Donc je suppose que le 'git bundle' d'il y a 2 semaines n'est plus à votre goût? (http://stackoverflow.com/questions/2129214/backup-a-local-git-repository/2129286#2129286) – VonC

+1

@VonC merci beaucoup pour cela. Bien que vous ayez répondu à la question de manière experte, il s'avère que cela n'a pas de sens d'effectuer une sauvegarde sur un bundle GIT dans un DropBox. Cela ajoute trop de trafic (au serveur) et n'a aucun avantage. MIrror est aussi beaucoup plus rapide. Maintenant, si je pouvais juste résoudre ce dernier problème :) –

+0

Juste complété ma réponse avec le droit '' * '' que vous cherchiez? – VonC

Répondre

2

Essayez git fetch au lieu de git pull

Depuis git pull est là pour chercher une branche et de fusion à une branche locale, il ne serait pas beaucoup de sens d'essayer de fusionner toutes branches à distance à une des branches locales.

$ git fetch a-repo_url 

Les copies de commande ci-dessus toutes les branches de l'espace de noms refs/heads/ à distance et les stocke à l'espace de noms refs/remotes/remoteRpo/ local, sauf si l'option branch.<name>.fetch est utilisé pour spécifier un refspec par défaut..
Essayez:

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

pourrait forcer aller chercher toutes les têtes pour toutes les branches.
Voir ceci SO question.


L'OP yar rapports:

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

travaux.

+0

J'ai essayé cela. GIT réponds '* branche HEAD -> FETCH_HEAD ' ... donc il obtient juste celui-là. –

+0

Essayé le dernier avec les astérisques ... fatal: Refus d'aller chercher dans la branche actuelle refs/têtes/maître du dépôt non-nu –

+0

@yar: Peut-être qu'il a besoin d'une référence à distance (http://www.kernel.org/ pub/software/scm/git/docs/git-remote.html), mais cela signifierait «que votre repo local connaisse le repo nu», ce qui n'est pas ce que vous voulez. – VonC

-1

Vous pouvez réaliser ceci avec git-copy.

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