为什么在命令git branch后我看到origin / master而不是master

时间:2017-08-28 13:42:18

标签: git branch

我的伙伴试图从git branch克隆源代码。 当我尝试他的机器“git branch”时,它输出:origin / master。 我克隆了相同的源,但在git branch之后,我看到总是输出:master。 我读到origin / master意味着远程分支,我不明白为什么他看到远程分支而不是本地分支。 问题可能是什么原因?

2 个答案:

答案 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