从捆绑备份恢复git存储库

use*_*719 31 git backup restore

我创建了我的git存储库的备份,如如何备份本地Git存储库?建议用

git bundle create /tmp/foo-all --all
Run Code Online (Sandbox Code Playgroud)

我可以看到所有的引用都在那里,包括由git-svn创建的远程引用.现在我无法弄清楚如何将此捆绑包再次恢复到本地存储库.我很确定我已经做过一次了.我尝试了git-clone,但这给了我一个只有一个存储库,我的备份包作为远程仓库.

我也试过了

git init
git bundle unbundle /tmp/foo --all 
Run Code Online (Sandbox Code Playgroud)

但这只列出了所有参考资料......

验证捆绑包给出:

$ 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
Run Code Online (Sandbox Code Playgroud)

fbi*_*nel 32

简短回答:

$ 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
...
Run Code Online (Sandbox Code Playgroud)

懒惰獾说了这个,但它在最后一段.:)


mas*_*y88 15

我更新版的git就足够了:

git clone bundle.file
Run Code Online (Sandbox Code Playgroud)

整个命令:

mkdir ~/git
cd ~/git
git clone /path/to/bundle.file
Run Code Online (Sandbox Code Playgroud)

它将完全恢复你的git裸存储库内容(它将编译为正常来源).您不需要任何其他文件.捆绑文件就足够了.

在unbundle之前总是验证你捆绑文件是明智的,如下所示:

git bundle verify /path/to/bundle.file 
Run Code Online (Sandbox Code Playgroud)


Laz*_*ger 8

Bundle不包含文件,但包含增量,您需要基础才能重新创建文件内容.你必须先克隆,然后再解开.只有大小写允许初始化而不是克隆,其中bundle需要0 refs

git bundle verify在分拆之前不要忽视

git-bundle(1) - Linux手册页

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

如果要创建存储库,则可以从包中克隆,就好像它是远程存储库而不是创建空存储库,然后从包中提取或提取对象

  • @ user1283719`git clone foo.bundle`? (2认同)
  • @ user1283719 - 只需在配置中编辑[remote"origin"] ...或者使用`git pull foo.bundle`而不是克隆 (2认同)

Jam*_*ett 5

这应该是答案git clone -b main <bundleName.bundle>