Git:refname';硕士';含糊不清
我已经研究了所有其他模糊的refname问题,但似乎都没有帮助。为什么我会收到这个警告Git:refname';硕士';含糊不清,git,Git,我已经研究了所有其他模糊的refname问题,但似乎都没有帮助。为什么我会收到这个警告 $ git checkout master warning: refname 'master' is ambiguous. $ git show-ref master eef61c00da690f093063ac5a728e22fd21648104 refs/heads/master $ git branch -a checkers exercises * master $ git remote -v
$ git checkout master
warning: refname 'master' is ambiguous.
$ git show-ref master
eef61c00da690f093063ac5a728e22fd21648104 refs/heads/master
$ git branch -a
checkers
exercises
* master
$ git remote -v
$
TL;DR:将标记保存并删除为(请参见“”):
原始答复: 我看到的大多数来源(如)都指向相同的原因: 当你试图结帐一家当地分行时,你会得到一个 如果您创建了一个与远程标记同名的本地分支,则会发生这种情况
Git应该签出您的本地分支,但它却试图签出标记,结果弄糊涂了 最初导入几个树是有问题的,因为它们包含同名的分支和标记。此后,我们通过解决了许多此类问题 在您的情况下,您没有远程标记,但是像您的分支那样命名的本地标记就足够了 歧义在
,例如master
,heads/master
,refs/heads/master
一个符号化的ref名称。例如,master
通常指由refs/heads/master
引用的提交对象如果您碰巧同时拥有
头/master
和标签/master
,您可以明确地说头/master
告诉git您指的是哪一个。当出现歧义时,
通过以下规则中的第一个匹配来消除歧义:
如果存在$GIT\u DIR/
,这就是您的意思(这通常仅适用于头部
、提取头部
、原始头部
、合并头部
和樱桃头
)
- 否则,
(如果存在)李>refs/
- 否则,
(如果存在)李>refs/tags/
- 否则,
(如果存在)李>refs/heads/
- 否则,
(如果存在)李>refs/remotes/
- 否则,
(如果存在)refs/remotes//HEAD
master
而且git签出头/master
始终有效。警告:默认情况下,这将在中签出分支。见“” 要避免这种情况,并且仍然使用明确的ref,请键入:
git checkout -B master heads/master
这件事刚刚发生在我身上。不知怎的,我有一个包含sha的.git/master文件。不知道那是怎么回事,但当我删除它时,错误消失了。如果您仔细阅读接受的答案,这是“预期行为”,但如果您这样做,您将看不到.git/master,例如git show ref master,因为它遵循稍微不同的规则。尽管这不适用于OP的情况,在意外地执行了
git分支原点/分支
而不是git签出原点/分支
之后,我得到了一个refname不明确
警告。这创建了一个名为origin/branch
的本地分支,这使得它与远程分支不明确。解决此问题非常简单,只需git branch-D origin/branch
(安全,因为-D
在本地分支上运行)。如果您错误地配置了两个同名的远程服务器,则此消息也会出现,这会造成歧义
检查.git/config
文件。如果您有多个远程回购配置了相同的:
fetch=+refs/heads/*:refs/remotes/origin/*
您应该将其中一个名称更改为其他名称,例如:
fetch=+refs/heads/*:refs/remotes/other_repo/*
如我在问题中所述,此repo只有一个主分支,没有远程分支。您链接到的问题中的用户遇到远程和同名分支的问题。是否有名为“master”的标记?是否有名为“master”的文件?防止此问题的一种方法是在代码库/组织中建立一种约定,以确保从不创建重叠引用。我使用以下命令:对于非原始本地分支,使用:local-/master
。对于发布分支和标记,对发布分支使用release/1.x.x
(即git flow feature freeze)和对部署/发布代码进行标记时使用release tag/1.1.0
,并禁止命名分支release
、release tag
或源名称。refs的搜索顺序很有帮助$GIT_DIR/master
确实是出于某种原因而存在的(不知道它指向什么,也不知道它是如何创建的)。删除它修复了警告。@Max,这正是我的问题——有人制作了一个.git/master文件(其内容是一个散列,指向几转前的master文件),并对其重命名修复了警告。谢谢谢谢所以我的修正是git-tag-tag-master;git tag-d master
(这也很有帮助:)@AshutoshJindal太棒了!我在答案中加入了您的评论以提高可视性。这是由于您忘记了update ref命令的“refs/heads”部分造成的(对我来说无论如何都是)。看我的答案,这是我的问题git checkout master
正确加载了分支,git diff master staging
使用了古老的参考,这让我感到困惑。这是我的解决方案。我花了很长时间才意识到,在运行find.git-iname master
之后,我终于注意到了它。这已经不止一次发生在我身上了,这是我删除master
分支时最令人沮丧和困惑的症状,但在执行git rev parse master
时它仍然会出现,谢谢!你的回答解释了我做错了什么。
warning: refname 'branch-name' is ambiguous
git checkout -B master heads/master