Git 推到新远程位置后缺少分支的引用/标头

Git 推到新远程位置后缺少分支的引用/标头,git,git-push,Git,Git Push,我正在使用以下步骤将存储库从gitolite迁移到bitbucket(在prem上): 1) 从gitolite克隆现有存储库: git clone git@gitolite.mydomain.com:/hello-world 2) 为bitbucket添加新的远程: git remote add origin-bb ssh://git@bitbucket.mydomain.com:7999/test/hello-world.git 3) 将所有分支推送到新的bitbucket原点: git

我正在使用以下步骤将存储库从gitolite迁移到bitbucket(在prem上):

1) 从gitolite克隆现有存储库:

git clone git@gitolite.mydomain.com:/hello-world
2) 为bitbucket添加新的远程:

git remote add origin-bb ssh://git@bitbucket.mydomain.com:7999/test/hello-world.git
3) 将所有分支推送到新的bitbucket原点:

git push origin-bb --all
4) 将所有标记推送到新的bitbucket原点

git push origin-bb --tags
推送成功完成,没有错误。但是,当我使用
git ls remote-h origin
git ls remote-h origin bb
比较两个原点之间的参照时,原始的遥控器列出了所有分支的参照/头,而新的遥控器只列出了参照/头/主:

git ls-remote -h origin-bb

0079dbeb885c9d88ac200d533930e2e72feb3627        refs/heads/master

git ls-remote -h origin

3215eca2b034d4ee8406bca9b648808fb489c110        refs/heads/hot_fixes
5cfec9cab26d2805064b076d701e53e12ff59c51        refs/heads/develop
61e7efadb6c071f25007dda55ce8c9b73802e1c3        refs/heads/experiment
0079dbeb885c9d88ac200d533930e2e72feb3627        refs/heads/master

这是预期的行为,还是我在推到新遥控器时需要一个附加选项以确保包含所有参考?

比较
git ls remote origin
不是与
git ls remote origin bb
而是与
git ls remote.
即与当前回购进行比较。我相信你会看到你只有一个分支
master
,这就是
git-push——所有的
push

首先,您需要将所有分支作为
git clone
clone仅克隆一个分支取到本地回购:

git fetch origin hot_fixes:hot_fixes
git fetch origin experiment:experiment

现在重复一下git push--all origin bb

抓取每个分支就像一个符咒!谢谢。请注意,要通过中间副本C将存储库从点a完全复制到点B,您可以在复制到C时更简单地使用
git clone--mirror
,然后从C上创建的镜像克隆中使用
git push--mirror
(然后,通常至少要删除镜像克隆,因为镜像克隆已不再有用。可以将其转换为更普通的裸克隆(参考
B
),甚至转换为非裸克隆,但这比删除和重新克隆要复杂:-)