Git:warning:refname 'master'不明确

r1zk6ea1  于 2023-04-04  发布在  Git
关注(0)|答案(7)|浏览(306)

我在这里看到一些人问同样的问题,但似乎他们的建议都不适用于我。我得到了标题中的警告,但我没有任何名为“master”的标签。这是git branch -a的结果:

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

我现在才使用git几个月,所以我主要担心的是这种模糊性可能会在未来扰乱repo。

vohkndzv

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路径限定符。

aiqt4smr

aiqt4smr2#

如“Git:refname ' master ' is ambiguous”,这意味着除了heads/master之外,你在git仓库中的以下命名空间中还有另一个master:

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

甚至是./<refname>,如Magnusanswer中所提到的。

woobm2wo

woobm2wo3#

作为将来的参考,我遇到了同样的问题,最终对我起作用的是here描述的解决方案。基本上,当你得到Git: warning: refname 'xxx' is ambiguous警告时,你可以用途:git show-ref xxx检查对xxx分支的引用,并验证哪些分支存在冲突。
在我的场景中,它是一个名为xxx的标记,分支名称也是相同的。标记是错误的,并从服务器中删除,所以我需要做的就是更新我的本地标记以匹配服务器:git fetch -p -P。此命令将在here中详细解释

piztneat

piztneat4#

当我创建一个与标记同名的分支时,我也遇到了类似的问题(不是master)。
这帮助我删除了标签https://stackoverflow.com/a/5480292/150953

git push --delete origin tagname
jvlzgdj9

jvlzgdj95#

git fetch --prune

git pull origin branch-name

应该能解决你的问题

yuvru6vn

yuvru6vn6#

检查你的.git/config文件。如果你有多个远程仓库配置了相同的文件,你可能会遇到这个问题:
fetch = +refs/heads/*:refs/remotes/origin/* .
另一个远程服务器应该有一个不同的名称,例如:
fetch = +refs/heads/*:refs/remotes/another_repo/*

gijlo24d

gijlo24d7#

我在本地创建了一个新的分支,与远程上的一个现有分支同名,然后得到了这个错误。
错误是这样的

warning: refname <<branch-name> is ambiguous

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

$ git branch -D <local-branch>

相关问题