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
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.
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.
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.
La copie de l'ensemble ou l'utilisation d'un outil de synchronisation est correcte. Le repo est entièrement contenu et portable.
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.
Tout ... sauf les espaces de noms – Izkata
Résumer,
- Vous pouvez simplement copier le répertoire putain, que cela fonctionne.
- Vous pouvez cloner.
- Vous pouvez
git bundle
ougit archive
Vous pouvez également,
- git-export rapide: http://www.kernel.org/pub/software/scm/git/docs/git-fast-export.html
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)
Merci pour cette information élaborée. Désolé pour l'acceptation tardive. Je suis parti pour quelques jours. – racl101
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. –