Git:refname'master'不明确

我看过所有其他模棱两可的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
$ 

TL; DR:保存并删除标签,如Ashutosh Jindal的评论(请参阅“在git中重命名标签?”):

git tag tag-master master
git tag -d master

原始答案:

我看到的大多数消息来源(如本FAQ)指出了同样的原因:

当你尝试结账本地分行时,你会得到一个

warning: refname 'branch-name' is ambiguous

如果您创建了与远程标签具有相同名称的本地分支,则会发生这种情况
Git应该检查你的本地分支,但是它试图检出标签,并且它会变得混乱。

几棵树的初始导入是有问题的,因为它们包含相同名称的分支和标签。 我们已经通过重命名标签解决了很多这些问题。

在你的情况下,你没有远程的,但像你的分支命名的本地标签就足够了。

歧义在gitrevision中指定

<refname> ,例如masterheads/masterrefs/heads/master

符号参考名称。 例如, master通常表示由refs/heads/master引用的提交对象。
如果你碰巧有heads/mastertags/master ,你可以明确地说heads/master告诉你的意思是哪一个。
当含糊不清时,通过在以下规则中进行第一次匹配来消除<refname>

如果$GIT_DIR/<refname>存在,那就是你的意思(这通常只对HEADFETCH_HEADORIG_HEADMERGE_HEADCHERRY_PICK_HEAD )。

  • 否则,如果它存在的话, refs/<refname> ;
  • 否则,如果它存在,则为refs/tags/<refname> ;
  • 否则, refs/heads/<refname>存在;
  • 否则,如果它存在,则为refs/remotes/<refname> ;
  • 否则,如果它存在,则refs/remotes/<refname>/HEAD
  • 因此,检查你的回购中可以找到master

    git checkout heads/master会一直工作。
    警告:默认情况下,这将在DETACHED HEAD模式下检出分支。 请参阅“为什么使用显式的' refs/heads/branch '为git checkout提供分离的HEAD?”。

    为了避免这种情况,仍然使用明确的ref,请输入:

    git checkout -B master heads/master
    

    虽然这不适用于OP的情况,但我得到一个refname is ambiguous在意外地执行git branch origin/branch而不是git checkout origin/branch之后的refname is ambiguous警告。 这创建了一个名为origin/branch的本地分支,这使得它与远程分支模糊不清。 解决这个问题就像git branch -D origin/branch一样简单(安全,因为-D在本地分支上运行)。


    这发生在我身上。 我以某种方式有一个文件.git / master包含沙。 不知道那是怎么回事,但是当我删除它时,错误消失了。 如果你仔细阅读接受的答案,这是“预期的行为”,但你不会看到.git / master,如果你做,例如git show-ref master,因为它遵循稍微不同的规则。

    链接地址: http://www.djcxy.com/p/90425.html

    上一篇: Git: refname 'master' is ambiguous

    下一篇: Generic method override not working in swift