从恢复混帐捆绑所有裁判(restore all refs from git bundle)

2019-09-21 07:12发布

如何从备份恢复(GIT束)所有远程分支机构。

备份:

$ git bundle create /tmp/dp --all
$ git bundle list-heads /tmp/dp | head -n5
f37c9fc7f0ce121568f42fb01390b1862c67f308 refs/heads/master
f37c9fc7f0ce121568f42fb01390b1862c67f308 refs/heads/show
9aabc2a4fb18181fee6d0e7e03170a976b6ed49b refs/remotes/origin/NewLayers
aef1fc8a416413ee5b7f4370f255ab654b3407ee refs/remotes/origin/elevator
bc4c78f94a67857fbd7210ecc5ebcd80ec736b1a refs/remotes/origin/elevator_1
$ git bundle verify /tmp/dp | head -n1
/tmp/dp is okay
The bundle contains 65 refs

恢复:

$ git clone /tmp/dp dp
Cloning into dp...
$ cd dp
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/show

我试图获取和拉动,但它并没有帮助。

我也试图与“--mirror”克隆创建裸回购,然后从它克隆,但结果是一样的。

Answer 1:

的问题是,在克隆远程存储库的远程分支不跟踪(以及远程回购的本地分支被跟踪为远程跟踪分支)。 你没有在你的问题,但我想与创建(裸)库--mirror包括远程跟踪分支。

所以,做正确的事情是:

git clone --mirror /tmp/dp
mkdir dp
mv dp.git dp/.git
cd dp
git config core.bare false
git reset --hard

(即--mirror克隆和撤消隐含--bare。)不漂亮,但工作。 可替代地使用GIT-INIT创建新的空回购和定义/ TMP / DP作为远程用线

fetch = +refs/*:refs/*

而不是正常的

fetch = +refs/heads/*:refs/remotes/remotename/*

并从中获取。



文章来源: restore all refs from git bundle