我在我提出的How to backup a local Git repository?中创建了我的git存储库的备份 与
git bundle create /tmp/foo-all --all
我可以看到所有引用都在那里,包括由git-svn创建的远程引用。 现在我无法弄清楚如何将此捆绑包再次恢复到本地存储库。 我很确定我已经做过一次了。我尝试了git-clone,但这给了我一个只有一个存储库,我的备份包作为远程仓库。
我也试过
git init
git bundle unbundle /tmp/foo --all
但这只列出了所有参考资料......
验证捆绑包:
$ 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
答案 0 :(得分:28)
简短回答:
$ 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
...
懒惰獾说了这个,但它在最后一段。 :)
答案 1 :(得分:12)
我更新版的git就足够了:
git clone bundle.file
整个命令:
mkdir ~/git
cd ~/git
git clone /path/to/bundle.file
它将完全恢复您的git裸存储库内容(将按照正常来源进行编译)。 你不需要任何其他文件。捆绑文件就足够了。
在unbundle之前总是验证你捆绑文件是明智的,如下所示:
git bundle verify /path/to/bundle.file
答案 2 :(得分:7)
捆绑包不包含文件,但增量,您需要基础才能重新创建文件内容。 你必须先克隆,然后再解开。初始化而不是克隆仅在以下情况下允许,其中bundle需要0 refs
在分拆之前不要忽略git bundle verify
git-bundle(1) - Linux man page
用于检查捆绑文件是否有效并将干净地应用于 当前的存储库。这包括检查捆绑包格式 本身以及检查先决条件提交是否存在和 在当前存储库中完全链接。 git bundle打印一个列表 缺少提交(如果有),并以非零状态退出。
如果您正在创建存储库,那么您可以从包中克隆,就好像它是一个远程存储库,而不是创建一个空的存储库,然后从包中提取或提取对象