使用git pull master命令出错:致命错误:找不到远程引用master。

7
运行git pull命令拉取主分支时:
$ git pull ds master

(注:ds是远程仓库的别名。)
它出现了以下错误:
fatal: couldn't find remote ref master

但是,当在分支“v1”上运行“git pull”时,它可以正常工作。

$ git pull ds v1
From https://github.com/<UserName>/<Repo's name>
 * branch            v1         -> FETCH_HEAD
Already up to date.

我在想这是否是问题的原因,但我运行了以下命令来确认:

$ git branch -a
  master
* v1
  remotes/ds/v1

什么问题?谢谢!

请注意:ds是远程仓库的别名。 - Blue Sea
远程库中是否有名为 master 的分支?请在 Github 上进行检查,或执行命令 git ls-remote --heads ds 进行查询。 - Jeff Mercado
对不起,我有点困惑。难道master不是一个默认分支吗?在开始的时候,它没有任何其他的规定吗?这是你建议的命令的输出结果:bb986c95d06cdff5192f59ba84e243214c8d97c9 refs/heads/v1 - Blue Sea
“master”是创建repo时的默认初始分支名称。只有在进行初始提交之后才会创建该分支。显然,该repo没有“master”,而是有一个名为“v1”的分支。 - Jeff Mercado
你的意思是在创建v1分支之前,主分支已经存在了吗?而在创建v1分支之后,主分支消失了吗?抱歉,我现在更加困惑了。 - Blue Sea
显示剩余3条评论
1个回答

6
在这种情况下的问题是,你的远程ds没有名为master的分支。可能他们改用了main,但也可能他们两个都没有。请注意,除了人们倾向于使用这些名称作为他们创建的第一个分支的初始名称之外,这些名称并没有什么特别之处。任何分支都可以随时重命名:名称并不重要。
请注意,在Git中,分支名称仅保存Git应考虑作为该分支一部分的最后提交的哈希ID。分支名称的两个限制是: 这意味着在一个新的、空的Git存储库中,没有提交记录,也没有分支名称存在。尽管如此,在这样的存储库中,你仍然处于某个分支上。你只是在一个不存在的分支上。第一次提交会创建具有该名称的分支 - 因此,在进行第一次提交之前,您可以随意更改名称: 您正在更改不存在的分支的名称。
“昨天,在楼梯上,我遇见了一个不在的人!今天他又不在那里了。哦,我多么希望他能走开!” ——威廉·休斯·米恩斯 一旦你创建了第一个提交,你的初始分支名称就存在了。现在你可以将其重命名,并/或者创建任意数量的新分支名称,但是所有名称都必须选择相同的这个提交。当你向存储库添加更多提交时,你可以使各个分支名称指向不同的提交,并/或者添加新的分支名称。现有的提交仍然存在,并且可以通过从某个命名的提交开始向后工作来找到它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接