我看到有几个人在这里问同样的问题,但似乎他们的建议都不适用于我。我收到了标题中的警告,但我没有任何名为“master”的标签。这是git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
知道这里可能出现什么问题吗?我现在只使用git几个月了,所以它主要让我担心这种模糊性可能会影响到未来的回购。
答案 0 :(得分:82)
对我来说,当我错误地发出“update-ref”命令时,我更早地追踪了这个警告的来源。如果您忘记在第一个arg中指定完整的refs / heads / mybranchname路径,则会创建一个.git / mybranchname文件,稍后当您尝试切换到该分支时会出现此警告。
只需删除.git / mybranchname即可解决,例如:
rm .git/master
作为参考,update-ref命令的正确形式是:
git update-ref refs/heads/mybranchname mytargetbranch
不要忘记“refs / heads”部分!
另外,我最常用的update-ref用例只是手动移动分支以指向另一个提交,我发现了一个更简单的语法:
git branch -f myBranchToMove destinationBranchOrHash
这种语法对我来说更容易,因为它不需要容易出错的引用/头部路径限定符。
答案 1 :(得分:21)
详见“Git: refname 'master
' is ambiguous”,这意味着,在heads/master
旁边,您在git repo中的以下命名空间之一中有另一个主人:
refs/<refname>
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD
答案 2 :(得分:5)
git fetch --prune
git pull origin branch-name
应该解决你的问题。
答案 3 :(得分:2)
供以后参考,我遇到了同样的问题,最终为我工作的是here中描述的解决方案。基本上,当您收到Git: warning: refname 'xxx' is ambiguous
警告时,可以使用:git show-ref xxx
来检查对xxx
分支的引用并验证哪些冲突。
在我的情况下,它是一个名为xxx
的标记,并且分支名称具有相同的名称。该标签是错误制作的,已从服务器中删除,因此我要做的就是更新本地标签以匹配服务器:git fetch -p -P
。 here
答案 4 :(得分:1)
检查您的 .git/config
文件。如果您有多个配置相同的远程存储库,您可能会遇到此问题:
fetch = +refs/heads/*:refs/remotes/origin/*
。
另一个远程服务器应该有一个不同的名字,例如:
fetch = +refs/heads/*:refs/remotes/another_repo/*
答案 5 :(得分:0)
当我创建一个与标签同名的分支时,我遇到了类似的问题(不是母版)。
这帮助我删除了标签https://stackoverflow.com/a/5480292/150953
git push --delete origin tagname