web-dev-qa-db-fra.com

restauration du référentiel git à partir d'une sauvegarde de bundle

j'ai créé des sauvegardes de mon référentiel git comme dans Comment sauvegarder un référentiel Git local? proposé avec

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

Je peux voir que toutes les références sont là, y compris une référence distante créée par git-svn. Maintenant, je ne peux pas comprendre comment restaurer à nouveau cet ensemble dans un référentiel local. Je suis sûr que je l'ai déjà fait une fois. J'ai essayé git-clone mais cela me donne juste un référentiel avec mon pack de sauvegarde comme repo distant.

J'ai aussi essayé

git init
git bundle unbundle /tmp/foo --all 

mais cela liste juste toutes les références ...

La vérification de l'ensemble donne:

$ git bundle verify $somewhere/foo.bundle 
The bundle contains 12 refs
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/master
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/heads/xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx refs/remotes/git-svn
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HEAD
The bundle requires these 0 ref
$somewhere/foo.bundle is okay
34
user1283719

Réponse courte:

$ git bundle verify $somewhere/foo.bundle
$ git clone $somewhere/foo.bundle
Cloning into 'foo'...
Receiving objects: 100% (10133/10133), 82.03 MiB | 74.25 MiB/s, done.
Resolving deltas: 100% (5436/5436), done.
$ cd foo
$ git status
...

Lazy Badger a dit cela, mais c'est dans le dernier paragraphe. :)

34
fbicknel

Une nouvelle version de git suffit:

git clone bundle.file

l'ensemble des commandes:

mkdir ~/git
cd ~/git
git clone /path/to/bundle.file

Il restaurera complètement le contenu du référentiel nue de Your (qui se compilera comme s'il s'agissait d'une source normale). Vous n'avez besoin d'aucun autre fichier. Le fichier bundle suffit.

Il est sage de toujours vérifier que vous regroupez le fichier avant de le dégrouper comme suit:

git bundle verify /path/to/bundle.file 
19
masterdany88

Le bundle ne contient pas de fichiers, mais deltas , vous avez besoin de la base pour pour recréer le contenu du fichier. Vous devez d'abord cloner, dégrouper plus tard. Init au lieu de cloner autorisé uniquement dans le cas où le bundle nécessite 0 réf.

N'ignorez pas git bundle verify avant le dégroupage

git-bundle (1) - Page de manuel Linux

Utilisé pour vérifier qu'un fichier de bundle est valide et s'appliquera proprement au référentiel actuel. Cela inclut des vérifications sur le format de bundle lui-même ainsi que la vérification que les validations prérequises existent et sont entièrement liées dans le référentiel actuel. git bundle imprime la liste des validations manquantes, le cas échéant, et se termine avec un statut différent de zéro.

Si vous créez le référentiel, vous pouvez cloner à partir du bundle comme s'il s'agissait d'un référentiel distant au lieu de créer un référentiel vide, puis d'extraire ou de récupérer des objets du bundle

8
Lazy Badger