Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从捆绑备份恢复git存储库_Git_Backup_Restore - Fatal编程技术网

从捆绑备份恢复git存储库

从捆绑备份恢复git存储库,git,backup,restore,Git,Backup,Restore,我创建了git存储库的备份,如中所示 与 我可以看到所有引用都在那里,包括git svn创建的远程引用。 现在我不知道如何再次将此捆绑包恢复到本地存储库。 我很肯定我已经做过一次了。我尝试了git clone,但它只提供了一个存储库,我的备份包是远程repo 我也试过了 git init git bundle unbundle /tmp/foo --all 但这只是列出了所有的参考资料 验证捆绑提供: $ git bundle verify $somewhere/foo.bundle Th

我创建了git存储库的备份,如中所示 与

我可以看到所有引用都在那里,包括git svn创建的远程引用。 现在我不知道如何再次将此捆绑包恢复到本地存储库。 我很肯定我已经做过一次了。我尝试了git clone,但它只提供了一个存储库,我的备份包是远程repo

我也试过了

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

Bundle不包含文件,而是增量,您需要基础,以便重新创建文件内容。 你必须先克隆,然后再解开。仅在包需要0个引用的情况下才允许初始化而不是克隆

在解除绑定之前不要忽略git bundle验证

用于检查捆绑文件是否有效并将干净地应用于 当前存储库。这包括检查捆绑包格式 以及检查先决条件提交是否存在和是否正确 在当前存储库中完全链接。git bundle打印一个 缺少提交(如果有),并以非零状态退出

如果您正在创建存储库,则可以从捆绑包中进行克隆,就像它是远程存储库一样,而不是创建空存储库,然后从捆绑包中提取对象。

简短回答:

$ 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
...

懒惰的獾说了这句话,但它在最后一段。:)

I较新版本的git足以:

git clone bundle.file
整个命令:

mkdir ~/git
cd ~/git
git clone /path/to/bundle.file
它将完全恢复您的git裸机存储库内容(它将作为正常源代码进行编译)。 您不需要任何其他文件。包文件就足够了

明智的做法是在解除绑定之前始终验证您的绑定文件,如下所示:

git bundle verify /path/to/bundle.file 

@user1283719
git clone foo.bundle
git clone foo.bundle
创建一个新的存储库,其中我的备份包作为远程存储库,如上所述。我的本地存储库无法修复,因此我想从备份中还原它,包括在其远程分支上使用git svn的功能。@user1283719-只需在配置中编辑[remote“origin”]。。。或者使用
git pull foo.bundle
而不是cloning@user1283719IIRC捆绑时svn信息丢失。因此,您可能需要使用svn元信息备份整个回购协议
git bundle verify /path/to/bundle.file