TL;DR:保存和删除标签,如Ashutosh Jindal 评论(请参阅“在 git 中重命名标签? ”):
git tag tag-master master
git tag -d master
原答案:
我看到的大多数来源(如这个常见问题解答)都指向相同的原因:
当您尝试结帐本地分支时,您会得到一个
warning: refname 'branch-name' is ambiguous
如果您创建了一个与远程标签同名的本地分支,就会发生这种情况。
Git 应该检出你的本地分支,但它却试图检出标签,它会感到困惑。
几棵树的初始导入是有问题的,因为它们包含同名的分支和标签。从那以后,我们通过重命名标签解决了很多这些问题。
在您的情况下,您没有远程,但是像您的分支一样命名的本地标签就足够了。
歧义在gitrevision中指定
<refname>
, 例如master
, heads/master
,refs/heads/master
一个符号引用名称。例如master
,通常表示 . 引用的提交对象refs/heads/master
。
如果你碰巧同时拥有heads/master
and tags/master
,你可以明确heads/master
告诉 git 你指的是哪一个。
当<refname>
有歧义时,通过以下规则中的第一个匹配来消除 a 的歧义:
如果$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? ”。
为避免这种情况,并且仍然使用明确的 ref,请键入:
git checkout -B master heads/master