我查看了所有其他模棱两可的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
$
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 63
TL; DR:保存并删除标签,如Ashutosh Jindal 评论(参见" 在git中重命名标签? "):
git tag tag-master master
git tag -d master
Run Code Online (Sandbox Code Playgroud)
原始答案:
我看到的大多数资源(如本常见问题解答)指出了同样的原因:
当您尝试签出本地分支时,您会得到一个
warning: refname 'branch-name' is ambiguous
Run Code Online (Sandbox Code Playgroud)
如果您创建了一个与远程标记同名的本地分支,则会发生这种情况.
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模式检出分支.请参阅" 为什么git checkout使用显式' refs/heads/branch'给予分离的HEAD? ".
为了避免这种情况,仍然使用明确的引用,键入:
git checkout -B master heads/master
Run Code Online (Sandbox Code Playgroud)
Tre*_*ude 26
虽然这不适用于OP的情况,但是在我refname is ambiguous意外地做了一个git branch origin/branch而不是一个git checkout origin/branch.这创建了一个名为的本地分支origin/branch,这使得它与远程分支不一致.解决问题很简单git branch -D origin/branch(安全,因为-D在本地分支上运行).
Gar*_*ryO 17
这恰好发生在我身上.我不知何故有一个包含sha的文件.git/master.不确定那是怎么回事,但当我删除它时,错误就消失了.如果你仔细阅读接受的答案,这是"预期的行为",但你不会看到.git/master,如果你做git show-ref master,因为它遵循略有不同的规则.
| 归档时间: |
|
| 查看次数: |
41715 次 |
| 最近记录: |