J'utilise git sur un projet relativement petit et je trouve que compresser le contenu du répertoire .git pourrait être un bon moyen de sauvegarder le projet. Mais c'est un peu bizarre parce que, lorsque je restaure, la première chose que je dois faire est git reset --hard
.
Y a-t-il des problèmes avec la sauvegarde d'un dépôt git de cette façon? De plus, y a-t-il une meilleure façon de le faire (par exemple, un format git portable ou quelque chose de similaire?)?
git bundle
Réponses:
J'ai commencé à pirater un peu le script de Yar et le résultat est sur github, y compris les pages de manuel et le script d'installation:
https://github.com/najamelan/git-backup
Installation :
Accueillant toutes les suggestions et pull request sur github.
la source
sudo install.sh
, puis configurez-le (il utilise le système git config) pour définir le répertoire de destination (voir le fichier readme sur github). Ensuite, vous exécutezgit backup
dans votre référentiel. En guise de note secondaire, c'était une expérience avec git bundle et une réponse à cette question, mais git bundle ne fait jamais de copie exacte absolue (par exemple, si je me souviens bien, en particulier en ce qui concerne les télécommandes git), donc personnellement, j'utilise tar pour sauvegarder. répertoires git.L'autre façon officielle serait d'utiliser git bundle
Cela créera un fichier prenant en charge
git fetch
etgit pull
afin de mettre à jour votre deuxième dépôt.Utile pour la sauvegarde et la restauration incrémentielles.
Mais si vous avez besoin de tout sauvegarder (parce que vous n'avez pas de deuxième dépôt avec du contenu plus ancien déjà en place), la sauvegarde est un peu plus élaborée à faire, comme mentionné dans mon autre réponse, après le commentaire de Kent Fredric :
(Il est une opération atomique , plutôt que de faire une archive du
.git
dossier, comme commenté par fantabolous )Attention: je ne recommanderais pas la solution de Pat Notz , qui clonait le dépôt. La sauvegarde de nombreux fichiers est toujours plus délicate que la sauvegarde ou la mise à jour ... un seul.
Si vous regardez l' historique des modifications de la réponse OP Yar , vous verrez que Yar a d'abord utilisé a , ... avec la modification:
clone --mirror
La solution actuelle de Yar utilise
git bundle
.Je repose mon cas.
la source
git bundle
. Ce n'est pas possible avec un zip global de tout le dépôt local.La façon dont je fais cela est de créer un référentiel distant (nu) (sur un lecteur séparé, une clé USB, un serveur de sauvegarde ou même un github), puis de l'utiliser
push --mirror
pour faire en sorte que ce dépôt distant ressemble exactement à mon dépôt local (sauf que le distant est un simple dépôt).Cela poussera toutes les références (branches et balises), y compris les mises à jour non rapides. J'utilise ceci pour créer des sauvegardes de mon référentiel local.
La page de manuel le décrit comme ceci:
J'ai fait un alias pour faire le push:
Ensuite, je cours
git bak
chaque fois que je veux faire une sauvegarde.la source
--mirror
n'exécute aucun type de vérification sur les objets qu'il obtient. Vous devriez probablement exécutergit fsck
à un moment donné pour éviter la corruption.[Je laisse juste ceci ici pour ma propre référence.]
Mon script de bundle appelé
git-backup
ressemble à ceciParfois j'utilise
git backup
et parfois j'utilisegit backup different-name
ce qui me donne la plupart des possibilités dont j'ai besoin.la source
--global
option, cet alias ne sera visible que dans votre projet (il est défini dans votre.git/config
fichier) - c'est probablement ce que vous voulez. Merci pour la réponse plus détaillée et bien formatée.Les deux réponses à ces questions sont correctes, mais il me manquait toujours une solution complète et courte pour sauvegarder un référentiel Github dans un fichier local. L' essentiel est disponible ici, n'hésitez pas à bifurquer ou à vous adapter à vos besoins.
backup.sh:
restore.sh:
la source
Vous pouvez sauvegarder le repo git avec git-copy . git-copy a enregistré un nouveau projet en tant que dépôt nu, cela signifie un coût de stockage minimum.
Ensuite, vous pouvez restaurer votre projet avec
git clone
la source
Trouvé le moyen officiel simple après avoir pataugé à travers les murs de texte ci-dessus qui vous ferait penser qu'il n'y en a pas.
Créez un bundle complet avec:
Restaurez-le avec:
Cette opération est l'AFAIK atomique. Consultez les documents officiels pour les détails granuleux.
Concernant "zip": les bundles git sont compressés et étonnamment petits par rapport à la taille du dossier .git.
la source
est venu à cette question via google.
Voici ce que j'ai fait de la manière la plus simple.
puis créez une nouvelle branche git à partir de cette branche
revenez à la branche d'origine et continuez:
En supposant que vous ayez foiré et que vous ayez besoin de restaurer quelque chose à partir de la branche de sauvegarde:
La meilleure partie si quelque chose est foiré, vous pouvez simplement supprimer la branche source et revenir à la branche de sauvegarde !!
la source