我看到有几个人在这里问同样的问题,但似乎他们的建议都不适合我。我收到标题中的警告,但我没有任何名为“master”的标签。这是
git branch -a
的结果:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
知道这里可能出了什么问题吗?我现在才使用 git 几个月,所以主要是让我担心这种歧义可能会在未来扰乱仓库。
对我来说,当我错误地发出“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 路径限定符。
当我创建与标签同名的分支时,我遇到了类似的问题(不是master)。
这帮助我删除了标签https://stackoverflow.com/a/5480292/150953
git push --delete origin tagname
git fetch --prune
git pull origin branch-name
应该可以解决你的问题。
检查您的
.git/config
文件。如果您有多个配置相同的远程存储库,您可能会遇到此问题:
fetch = +refs/heads/*:refs/remotes/origin/*
.
其他远程服务器应该有不同的名称,例如:
fetch = +refs/heads/*:refs/remotes/another_repo/*
在本地创建一个与远程现有分支同名的新分支后,我收到了该错误。
错误是这样的
warning: refname <<branch-name> is ambiguous
我必须(强制)删除本地分支,然后创建一个与远程现有分支名称不同的新分支,如下所示:
$ git branch -D <local-branch>
对我来说,事实证明我碰巧有一个名为
main
的标签,因此当我运行 git checkout main
时,我会收到一条警告说 warning: refname 'main' is ambiguous.
。
解决这个问题的方法是检查您是否有任何分支或标签使用
git branch -a
然后使用
检查您的标签git tag -l
我有一个名为
main
的标签,所以为了修复我运行的问题
git tag main-tag main
git tag -d main
git tag -l
现在跑步后
git checkout main
一切都已确定! 🤘