我的伙伴试图从git branch克隆源代码。 当我尝试他的机器“git branch”时,它输出:origin / master。 我克隆了相同的源,但在git branch之后,我看到总是输出:master。 我读到origin / master意味着远程分支,我不明白为什么他看到远程分支而不是本地分支。 问题可能是什么原因?
答案 0 :(得分:1)
这很可能是由于引用的歧义消除造成的,因为可以命名本地分支原点/主数据。
有关详细信息,请参阅Git Revisions Documentation,但总结一下,在解析引用时,它会按顺序检查以下位置并返回第一个匹配项:
$GIT_DIR/<refname>
$GIT_DIR/refs/<refname>
$GIT_DIR/refs/tags/<refname>
$GIT_DIR/refs/heads/<refname>
$GIT_DIR/refs/remotes/<refname>
$GIT_DIR/refs/remotes/<refname>/HEAD
查看朋友的存储库,您将找到此文件
$GIT_DIR/refs/heads/origin/master
。如果是这样,一切都正常,他只是有一个模棱两可的参考。他想要更改他的本地分支名称以消除歧义,因此消除歧义没有意外问题。
当您输入git checkout -b origin/master
而不是git checkout -b master origin/master
作为旁注,你的本地分支名称只是一个指向提交的指针,所以它的命名并不重要(只要它不含糊不清)。当您推送到遥控器时,您将根据本地分支的远程设置更新遥控器的分支,因此其他任何人都不会看到您的本地分支名称。
答案 1 :(得分:1)
我认为答案非常简单,你的朋友检查了主人的原产地/主人。 执行cmd:
git branch --all
在显示的分支列表中尝试查找分支master
,如果没有这样的分支,只需结帐即可
git checkout master
然后从本地副本中删除origin / master
git branch -D origin/master