我在这里看到一些人问同样的问题,但似乎他们的建议都不适合我。我收到此标题中的警告,但没有名为“ 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混淆。
git checkout heads/master应该可以正常工作(无警告)
git show-ref。
git show-ref一堆东西在这里不适合。我相信可能有两句话以“ master”结尾:refs / remotes / origin / master,refs / heads / master
Answers:
对我而言,当我错误地发出“ 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 update-ref -d master一旦意识到由update-ref命令创建了重复的ref,它也可以工作。
当我创建一个与标签同名的分支时,我遇到了类似的问题(不是母版)。
这有助于我删除标签https://stackoverflow.com/a/5480292/150953
git push --delete origin tagname