正如目前I cannot clone repositories from a Bitbucket server,我发现我仍然可以做一系列的git init,git remote add等来获取我的计算机上的存储库。我想确保我完全产生相当于“克隆”的东西。以下是否正确?
git init
git remote add origin -m master https://www.myserver.com/bitbucket/scm/proj/repo.git
# need to do git fetch twice, otherwise for some reason git branch -r
# returns "warning: ignoring broken ref refs/remotes/origin/HEAD"
git fetch
git fetch
git branch -r
git checkout --track origin/master
git checkout --track origin/develop
git checkout --track origin/feature/myfeature
# (etc.. for all the branches I need to work with)
我也不确定git remote中的标志-m是否需要或可能有害。
@jthill建议的一些调试信息:
存储库1
git ls-remote --symref origin HEAD
ref: refs/heads/master HEAD
842163b275ade3ec317543ed3a645f537d719766 HEAD
存储库2
git ls-remote --symref origin HEAD
ref: refs/heads/master HEAD
1a1044eef2d46a292305dfc10cf076a4cf1e9933 HEAD
而已。克隆是init,远程添加和获取部分,之后您可以例如git checkout master
甚至在创建本地ref之前,git会将其设置并自动跟踪遥控器,因为该序列非常常见。 -m
只是绕过了那个bitbucket repo作为它自己的主要分支,告诉当地的git你想要什么,如果master
是你想要的,那就是你想要的。
因此,-m
“应该”,尽可能接近,避免原点的HEAD
发生任何错误配置,并且第二次获取“不应该”是必要的。如果你将包括git ls-remote --symref origin HEAD
的结果,它可能有可能找出造成麻烦的原因,但我没有看到太多意义,你有一个解决方法。