Est-il un moyen simple de sauvegarder l'intégralité d'un repo git, y compris toutes les branches et les tags?
Réponses
Trop de publicités?git bundle
J'aime cette méthode, car les résultats sont seulement un fichier, plus facile à copier autour.
Voir ProGit: petit paquet de joie.
Voir aussi "Comment puis-je envoyer un email à quelqu'un un dépôt git?", où la commande
git bundle create /tmp/foo-all --all
est détaillé:
git bundle
ne paquet de références qui sont représentés par git show-ref: cela comprend les chefs, les balises, et à distance de la tête.
Il est très important que la base utilisée sera tenue par la destination.
Il est normal de se tromper sur le côté de la prudence, provoquant le fichier bundle contenant les objets déjà dans la destination, que celles-ci sont ignorées lors du déballage à la destination.
Pour utiliser ce module, vous pouvez le copier, la spécification d'un dossier inexistant (en dehors de toute repo git):
git clone /tmp/foo-all newFolder
L'expansion de certaines autres réponses, c'est ce que je fais:
Le programme d'installation le repo: git clone --mirror user@server:/url-to-repo.git
Puis, quand vous voulez vous rafraîchir la sauvegarde: git remote update
du clone emplacement.
Cela nous conforte dans toutes les branches et les tags, y compris les nouveaux qui seront ajoutés plus tard, mais il est intéressant de noter que les branches qui sont supprimés ne sont pas supprimés à partir du clone (qui pour une sauvegarde peut être une bonne chose).
C'est atomique, donc qui n'ont pas de problèmes qu'une simple copie.
l'utilisation de git bundle, ou clone
copier le répertoire git n'est pas une bonne solution car il n'est pas atomique. Si vous avez un grand dépôt qui prend beaucoup de temps à copier et quelqu'un pousse dans votre référentiel, il aura une incidence sur votre dos vers le haut. Le clonage ou de faire un bundle n'aurez pas ce problème.