Git:警告:refname'master'是不明确的

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

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

任何想法在这里可能会出错? 我只用了几个月的时间,所以大部分时候我只是担心这个模糊不清可能会影响到未来的回购。

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

它通过简单地删除.git / mybranchname来解决,例如:

 rm .git/master 

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

 git update-ref refs/heads/mybranchname mytargetbranch 

不要忘记“refs / heads”部分!

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

git branch -f oldhashorbranchname newhashorbranchname

这个语法对我来说更简单,因为它不需要容易出错的refs / headspath限定符。

如“ Git:refname'master''中所详述的那样,这意味着除了heads/master ,您还可以在git仓库中拥有以下其中一个名称空间的主人:

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

甚至还有./<refname> ,正如Magnus的回答中所提到的。