2010-12-07 55 views
16

Donc, je veux être capable de sauvegarder un dépôt git qui peut avoir plusieurs branches sur un disque dur externe et être ensuite en mesure de le copier sur mon ordinateur local et de travailler avec lui comme d'habitude? J'ai essayé simplement de copier le dossier de répertoire de travail contenant le répertoire de .git et cela a fonctionné. Cependant, je me demandais si c'était la meilleure façon ou si elle avait des pièges plus tard.Quelle est la meilleure façon de sauvegarder un référentiel git entier sur un disque externe?

Répondre

20

La copie de l'ensemble de la copie de travail à l'aide des commandes de copie de système de fichiers standard fonctionne correctement. Vous pouvez également compresser/compresser la sauvegarde.

Si vous êtes préoccupé par l'espace disque, vous pouvez également regarder "git bundle", ce qui pourrait produire des fichiers plus petits.

Vous pouvez également obtenir des sauvegardes incrémentielles en démarrant simplement un nouveau dépôt sur le disque externe (git clone), puis en tirant les modifications à chaque fois (git pull). Il n'y a pas beaucoup de différence entre une sauvegarde et une copie de travail dans un système distribué comme git.

+0

Merci pour cette information élaborée. Désolé pour l'acceptation tardive. Je suis parti pour quelques jours. – racl101

+0

J'ai du mal à implémenter votre troisième suggestion, les sauvegardes incrémentales avec git, à cause des sous-répertoires qui sont eux-mêmes versionnés, et qui sont donc vides. À http://stackoverflow.com/q/24198280/2533127. –

0

Il n'y a pas de piège ici, git est un SCM entièrement distribué. Copier une copie de travail avec le répertoire .git est une sauvegarde suffisante.

2

C'est à peu près la seule façon de le faire, à moins de cloner le dépôt sur le disque externe. Mais l'une ou l'autre approche est à peu près équivalente, sauf que la copie de votre clone conservera tous les paramètres de configuration spécifiques au repo.

0

La copie de l'ensemble ou l'utilisation d'un outil de synchronisation est correcte. Le repo est entièrement contenu et portable.

5

Si vous n'avez aucune modification à sauvegarder dans votre arbre de travail, vous pouvez utiliser git clone --mirror pour créer un clone nu avec toutes les références (branches, étiquettes, absolument tout) copiées textuellement. Vous pouvez ensuite utiliser git push --mirror pour le mettre à jour de manière incrémentielle. C'est ce pour quoi il est conçu.

La copie de l'ensemble du repo, y compris l'arborescence de travail, fonctionne également, mais c'est un peu difficile à faire de manière incrémentielle et, évidemment, prend plus de place.

+0

Tout ... sauf les espaces de noms – Izkata

1

Résumer,

  • Vous pouvez simplement copier le répertoire putain, que cela fonctionne.
  • Vous pouvez cloner.
  • Vous pouvez git bundle ou git archive

Vous pouvez également,

que vous pouvez jeter dans un seul fichier que vous pouvez importer ultérieurement à partir .

$ git fast-export --all | (cd /empty/repository && git fast-import)