Git 推到新远程位置后缺少分支的引用/标头
我正在使用以下步骤将存储库从gitolite迁移到bitbucket(在prem上): 1) 从gitolite克隆现有存储库: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
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
),甚至转换为非裸克隆,但这比删除和重新克隆要复杂:-)