我看到有几个人在这里问同样的问题,但他们的建议似乎都不适用于我。我收到了标题中的警告,但我没有任何名为“master”的标签。这是结果git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
知道这里可能出了什么问题吗?我现在只使用 git 几个月了,所以它主要是让我担心这种歧义可能会在未来与 repo 混淆。
我看到有几个人在这里问同样的问题,但他们的建议似乎都不适用于我。我收到了标题中的警告,但我没有任何名为“master”的标签。这是结果git branch -a
:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
知道这里可能出了什么问题吗?我现在只使用 git 几个月了,所以它主要是让我担心这种歧义可能会在未来与 repo 混淆。
对我来说,当我错误地发出“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
这种语法对我来说更容易,因为它不需要容易出错的 refs/heads 路径限定符。
如“ Git: refname ' master
' is ambiguous ”中所述,这意味着,heads/master
在 git repo 的以下命名空间之一中,您还有另一个 master:
refs/<refname>
refs/tags/<refname>
refs/heads/<refname>
refs/remotes/<refname>
refs/remotes/<refname>/HEAD
git fetch --prune
git pull origin branch-name
应该解决你的问题。
当我创建一个与标签同名的分支时,我遇到了类似的问题(不是 master)。
这帮助我删除了标签https://stackoverflow.com/a/5480292/150953
git push --delete origin tagname
检查你的.git/config
文件。如果您配置了多个远程仓库,您可能会遇到此问题:
fetch = +refs/heads/*:refs/remotes/origin/*
.
另一个远程服务器应具有不同的名称,例如:
fetch = +refs/heads/*:refs/remotes/another_repo/*