Une sauvegarde complète d'un git repo?

y a-t-il un moyen simple de sauvegarder un repo git complet incluant toutes les branches et étiquettes?

95
demandé sur Oren Hizkiya 2011-04-07 12:39:57

10 réponses

pourquoi en faire un clone?

git clone --mirror other/repo.git

chaque dépôt est une sauvegarde de sa télécommande.

42
répondu KingCrunch 2018-10-03 14:10:00
git bundle

j'aime cette méthode, car il résulte en seulement un Fichier, plus facile à copier autour.

Voir Prog.: Petit Paquet de joie .

Voir aussi" Comment puis-je envoyer un dépôt git à quelqu'un? ", où la commande

git bundle create /tmp/foo-all --all

est détaillé:

git bundle ne paquet de références qui sont indiqué par git show-ref : comprend les têtes, les étiquettes et les têtes distantes.

Il est très important que la base utilisée sera tenue par la destination.

Il est normal d'errer du côté de la prudence, en faisant en sorte que le fichier package contienne des objets déjà dans la destination, car ceux-ci sont ignorés lors du déballage à la destination.


pour l'utilisation ce paquet, vous pouvez le cloner, en spécifiant un dossier inexistant (en dehors de tout git repo):

git clone /tmp/foo-all newFolder
151
répondu VonC 2018-03-16 12:30:21

en développant sur d'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 rafraîchir la sauvegarde: git remote update à partir de l'emplacement du clone.

cela sauvegarde toutes les branches et étiquettes, y compris les nouvelles qui sont ajoutées plus tard, bien qu'il soit intéressant de noter que les branches qui sont supprimées ne sont pas supprimées du clone (ce qui pour une sauvegarde peut être une bonne chose).

C'est atomique, donc qui n'ont pas de problèmes qu'une simple copie.

voir http://www.garron.me/en/bits/backup-git-bare-repo.html

16
répondu fantabolous 2014-05-29 02:47:51

tout est contenu dans le répertoire .git . Il suffit de sauvegarder cela avec votre projet comme vous le feriez n'importe quel dossier.

5
répondu Oren Hizkiya 2011-04-07 08:41:08

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 que quelqu'un pousse vers votre dépôt, cela affectera votre sauvegarde. Le clonage ou la fabrication d'un faisceau n'aura pas ce problème.

4
répondu Sunil Khiatani 2013-04-11 03:54:51

vous pouvez sauvegarder le git repo avec git-copy à la taille de stockage minimale.

git copy /path/to/project /backup/project.repo.backup

alors vous pouvez restaurer votre projet avec git clone

git clone /backup/project.repo.backup project
3
répondu Quanlong 2015-06-03 03:44:29

la bonne réponse IMO est git clone -- mirror . Cela vous permettra de sauvegarder entièrement votre pension.

Git clone miroir permet de cloner l'intégralité du référentiel, les notes, les chefs, les références, etc. et est généralement utilisé pour copier l'intégralité d'un référentiel vers un nouveau serveur git. cela va tirer vers le bas Un toutes les branches et tout, le tout dépôt.

git clone --mirror git@example.com/your-repo.git
  • normalement, le clonage d'un repo n'inclut pas toutes les branches, seulement le Master.

  • copier le dossier repo ne "Copier" les branches qui ont été tiré dans...donc par défaut qui est branche principale seulement ou autre branches que vous avez vérifié auparavant.

  • la commande git bundle n'est pas non plus ce que vous voulez: "la commande bundle va emballer tout ce qui serait normalement poussé sur la wire avec une commande git push dans un fichier binaire que vous pouvez envoyer par e-mail à quelqu'un ou mis sur une clé USB, puis dégrafé dans un autre dépôt."(De Quelle est la différence entre git clone --miroir et git clone --bare )

2
répondu John 2018-05-14 19:18:56

voici deux options:

  1. vous pouvez prendre directement un tar du répertoire repo de git car il contient tout le contenu nu du serveur de repo. Il y a une légère possibilité que quelqu'un travaille sur repo tout en prenant des renforts.

  2. la commande suivante vous donnera le clone nu de repo( comme il est dans le serveur), alors vous pouvez prendre un tar de l'emplacement lorsque vous avez cloné sans aucun problème.

    git clone --bare {your backup local repo} {new location where you want to clone}
    
0
répondu vishal sahasrabuddhe 2015-07-27 14:53:00
cd /path/to/backupdir/
git clone /path/to/repo
cd /path/to/repo
git remote add backup /path/to/backupdir
git push --set-upstream backup master

cela crée une sauvegarde et fait la configuration, de sorte que vous pouvez faire une poussée git pour mettre à jour votre sauvegarde, ce qui est probablement ce que vous voulez faire. Assurez-vous simplement que /path/to/backupdir et /path/to/repo sont au moins des disques durs différents, sinon cela n'a pas beaucoup de sens de le faire.

-1
répondu Arne 2015-04-22 10:14:15

autant que je sache, vous pouvez simplement faire une copie du répertoire dans lequel se trouve votre dossier, c'est tout!

cp -r project project-backup
-6
répondu Richard Tuin 2011-04-07 08:42:22