当前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
答案 0 :(得分:1)
就是这样。克隆是init,远程添加和提取部分,之后您可以例如git checkout master
甚至在创建本地ref和git之前都会对其进行设置并自动跟踪远程对象,因为该顺序非常普遍。 -m
只是绕过了Bitbucket存储库作为其自己的主分支的内容,并告诉本地git您想要的内容,如果master
是您想要的,那就是您想要的。
因此,据我所知,-m
“应该”应该避免源HEAD
发生的任何错误配置,并且第二次提取“不应”。如果您将git ls-remote --symref origin HEAD
的结果包括在内,则可能可以确定导致问题的原因,但是我认为没有什么意义,您已经找到了解决方法。