我看到有几个人在这里问同样的问题,但似乎他们的建议都不适用于我.我收到了标题中的警告,但我没有任何名为"master"的标签.这是以下结果git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
知道这里可能出现什么问题吗?我现在只使用git几个月了,所以它主要让我担心这种模糊性可能会在未来混乱.
Mag*_*nus 87
对我来说,当我错误地发出"update-ref"命令时,我更早地追踪了这个警告的来源.如果您忘记在第一个arg中指定完整的refs/heads/mybranchname路径,则会创建一个.git/mybranchname文件,当您尝试切换到该分支时,会导致此警告.
只需删除.git/mybranchname即可解决,例如:
rm .git/master
Run Code Online (Sandbox Code Playgroud)
作为参考,update-ref命令的正确形式是:
git update-ref refs/heads/mybranchname mytargetbranch
Run Code Online (Sandbox Code Playgroud)
不要忘记"refs/heads"部分!
另外,我最常用的update-ref用例只是手动移动分支以指向另一个提交,我发现了一个更简单的语法:
git branch -f myBranchToMove destinationBranchOrHash
这种语法对我来说更容易,因为它不需要容易出错的引用/头路径限定符.
Von*_*onC 25
正如" Git:refname' master
'中含义模糊 "中所述,这意味着,除此之外heads/master
,您还可以在git repo中的以下命名空间之一中拥有另一个主服务器:
refs/<refname>
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD
Run Code Online (Sandbox Code Playgroud)
甚至./<refname>
,正如马格努斯的回答中所提到的那样.
当我创建一个与标签同名的分支时,我遇到了类似的问题(不是 master)。
这帮助我删除了标签/sf/answers/383620471/
git push --delete origin tagname
Run Code Online (Sandbox Code Playgroud)