我在这里看到一些人问同样的问题,但似乎他们的建议都不适用于我。我得到了标题中的警告,但我没有任何名为“master”的标签。这是git branch -a的结果:
git branch -a
* master remotes/origin/HEAD -> origin/master remotes/origin/master
我现在才使用git几个月,所以我主要担心的是这种模糊性可能会在未来扰乱repo。
vohkndzv1#
对于我来说,我追溯到这个警告的来源,当我错误地发出“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路径限定符。
git branch -f myBranchToMove destinationBranchOrHash
aiqt4smr2#
如“Git:refname ' master ' is ambiguous”,这意味着除了heads/master之外,你在git仓库中的以下命名空间中还有另一个master:
master
heads/master
refs/<refname> refs/tags/<refname> refs/heads/<refname> refs/remotes/<refname> refs/remotes/<refname>/HEAD
甚至是./<refname>,如Magnus的answer中所提到的。
./<refname>
woobm2wo3#
作为将来的参考,我遇到了同样的问题,最终对我起作用的是here描述的解决方案。基本上,当你得到Git: warning: refname 'xxx' is ambiguous警告时,你可以用途:git show-ref xxx检查对xxx分支的引用,并验证哪些分支存在冲突。在我的场景中,它是一个名为xxx的标记,分支名称也是相同的。标记是错误的,并从服务器中删除,所以我需要做的就是更新我的本地标记以匹配服务器:git fetch -p -P。此命令将在here中详细解释
Git: warning: refname 'xxx' is ambiguous
git show-ref xxx
xxx
git fetch -p -P
piztneat4#
当我创建一个与标记同名的分支时,我也遇到了类似的问题(不是master)。这帮助我删除了标签https://stackoverflow.com/a/5480292/150953
git push --delete origin tagname
jvlzgdj95#
git fetch --prune git pull origin branch-name
应该能解决你的问题
yuvru6vn6#
检查你的.git/config文件。如果你有多个远程仓库配置了相同的文件,你可能会遇到这个问题:fetch = +refs/heads/*:refs/remotes/origin/* .另一个远程服务器应该有一个不同的名称,例如:fetch = +refs/heads/*:refs/remotes/another_repo/*
.git/config
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/heads/*:refs/remotes/another_repo/*
gijlo24d7#
我在本地创建了一个新的分支,与远程上的一个现有分支同名,然后得到了这个错误。错误是这样的
warning: refname <<branch-name> is ambiguous
我不得不(强制)删除本地分支,然后创建一个与远程现有分支名称不同的新分支,如下所示:
$ git branch -D <local-branch>
7条答案
按热度按时间vohkndzv1#
对于我来说,我追溯到这个警告的来源,当我错误地发出“update-ref”命令时。如果你忘记在第一个参数中指定完整的refs/heads/mybranchname路径,那么就会创建一个文件.git/mybranchname,当你尝试切换到该分支时,就会导致这个警告。
只需删除.git/mybranchname即可解决,例如:
作为参考,update-ref命令的正确格式是:
别忘了“裁判/头”的部分!
此外,我最常用的update-ref用例是简单地手动移动一个分支以指向另一个提交,我发现了一个更简单的语法:
git branch -f myBranchToMove destinationBranchOrHash
这种语法对我来说更简单,因为它不需要容易出错的refs/heads路径限定符。
aiqt4smr2#
如“Git:refname '
master
' is ambiguous”,这意味着除了heads/master
之外,你在git仓库中的以下命名空间中还有另一个master:甚至是
./<refname>
,如Magnus的answer中所提到的。woobm2wo3#
作为将来的参考,我遇到了同样的问题,最终对我起作用的是here描述的解决方案。基本上,当你得到
Git: warning: refname 'xxx' is ambiguous
警告时,你可以用途:git show-ref xxx
检查对xxx
分支的引用,并验证哪些分支存在冲突。在我的场景中,它是一个名为
xxx
的标记,分支名称也是相同的。标记是错误的,并从服务器中删除,所以我需要做的就是更新我的本地标记以匹配服务器:git fetch -p -P
。此命令将在here中详细解释piztneat4#
当我创建一个与标记同名的分支时,我也遇到了类似的问题(不是master)。
这帮助我删除了标签https://stackoverflow.com/a/5480292/150953
jvlzgdj95#
应该能解决你的问题
yuvru6vn6#
检查你的
.git/config
文件。如果你有多个远程仓库配置了相同的文件,你可能会遇到这个问题:fetch = +refs/heads/*:refs/remotes/origin/*
.另一个远程服务器应该有一个不同的名称,例如:
fetch = +refs/heads/*:refs/remotes/another_repo/*
gijlo24d7#
我在本地创建了一个新的分支,与远程上的一个现有分支同名,然后得到了这个错误。
错误是这样的
我不得不(强制)删除本地分支,然后创建一个与远程现有分支名称不同的新分支,如下所示: