Git:警告:引用名称“master”不明确

问题描述 投票:0回答:8

我看到有几个人在这里问同样的问题,但似乎他们的建议都不适合我。我收到标题中的警告,但我没有任何名为“master”的标签。这是

git branch -a
的结果:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

知道这里可能出了什么问题吗?我现在才使用 git 几个月,所以主要是让我担心这种歧义可能会在未来扰乱仓库。

git
8个回答
119
投票

对我来说,当我错误地发出“update-ref”命令时,我很早就追踪到了这个警告的来源。 如果您忘记在第一个参数中指定完整的 refs/heads/mybranchname 路径,则会创建一个文件 .git/mybranchname,稍后当您尝试切换到该分支时会导致此警告。

只需删除 .git/mybranchname 即可解决,例如:

rm .git/master

作为参考,update-ref 命令的正确形式是:

git update-ref refs/heads/mybranchname mytargetbranch

不要忘记“裁判/负责人”部分!

此外,我最常见的 update-ref 用例只是手动移动分支以指向另一个提交,我发现了一种更简单的语法:

git branch -f myBranchToMove destinationBranchOrHash

这种语法对我来说更容易,因为它不需要容易出错的 refs/heads 路径限定符。


33
投票

如“Git:refname '

master
' 不明确”中所述,这意味着,除了
heads/master
之外,您在 git 存储库中的以下命名空间之一中还有另一个 master:

refs/<refname> 
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD

甚至

./<refname>
,如Magnusanswer中所述。


32
投票

为了将来的参考,我遇到了同样的问题,最终对我有用的是here描述的解决方案。基本上,当您收到

Git: warning: refname 'xxx' is ambiguous
警告时,您可以使用:
git show-ref xxx
检查对
xxx
分支的引用并验证哪些分支存在冲突。

在我的场景中,它是一个名为

xxx
的标签和同名的分支名称。该标签是错误制作的,并已从服务器中删除,因此我所需要做的就是更新我的本地标签以匹配服务器:
git fetch -p -P
。该命令有详细解释这里


10
投票

当我创建与标签同名的分支时,我遇到了类似的问题(不是master)。

这帮助我删除了标签https://stackoverflow.com/a/5480292/150953

git push --delete origin tagname

9
投票
git fetch --prune

git pull origin branch-name

应该可以解决你的问题。


4
投票

检查您的

.git/config
文件。如果您有多个配置相同的远程存储库,您可能会遇到此问题:

fetch = +refs/heads/*:refs/remotes/origin/*
.

其他远程服务器应该有不同的名称,例如:

fetch = +refs/heads/*:refs/remotes/another_repo/*


1
投票

在本地创建一个与远程现有分支同名的新分支后,我收到了该错误。

错误是这样的

warning: refname <<branch-name> is ambiguous 

我必须(强制)删除本地分支,然后创建一个与远程现有分支名称不同的新分支,如下所示:

$ git branch -D <local-branch>

0
投票

对我来说,事实证明我碰巧有一个名为

main
的标签,因此当我运行
git checkout main
时,我会收到一条警告说
warning: refname 'main' is ambiguous.

解决这个问题的方法是检查您是否有任何分支或标签使用

git branch -a

然后使用

检查您的标签
git tag -l

我有一个名为

main
的标签,所以为了修复我运行的问题

git tag main-tag main
git tag -d main
git tag -l

现在跑步后

git checkout main
一切都已确定! 🤘

© www.soinside.com 2019 - 2024. All rights reserved.