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>
,例如master
, heads/master
, refs/heads/master
符号参考名称。 例如, master
通常表示由refs/heads/master
引用的提交对象。
如果你碰巧有heads/master
和tags/master
,你可以明确地说heads/master
告诉你的意思是哪一个。
当含糊不清时,通过在以下规则中进行第一次匹配来消除<refname>
:
如果$GIT_DIR/<refname>
存在,那就是你的意思(这通常只对HEAD
, FETCH_HEAD
, ORIG_HEAD
, MERGE_HEAD
和CHERRY_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