git push 标签错误的含义是:“删除一个不存在的引用”。

3
在对一个分支进行了一些修改之后,我们需要移动发行标签。当我尝试这样做时,遇到了一个令人困惑的 git 错误信息,并请求有经验的人解释一下。我可以找到许多类似的网页,但是我查看的所有解释似乎都不适用。请不要在本次讨论中批评我选择的方法,因为存在外部原因,而这些原因对于本次讨论没有任何用处。
我的操作如下:
在本地和远程仓库中,我运行了 "git tag -d Release_7_3_16" 来删除现有的标签。在本地仓库中运行 git push/pull 没有任何变化。无论是在本地目录还是在 origin 目录中,'git tag' 都显示该标签不存在。
然后,在本地仓库中运行了 "git -f -a Release_7_3_16"(因为我已经在正确的分支上),以在正确的更改处重新创建标签。
我试图使用 "git push origin :refs/tags/Release_7_3_16" 将标签推送到远程,但出现了以下错误:
remote: warning: Deleting a non-existent ref.
To /db/sds14/user2/cg_sandbox/depot/cg_sandbox.git/
 - [deleted]         refs/tags/Release_c60_7_3_16

这实际上是什么意思,因为我现在并没有删除任何东西?
1个回答

4
我尝试使用“git push origin :refs/tag/Release_7_3_16”将标签推送到远程。
这个语法,特别是“:name”部分,在远程的意思是“请删除”。
来自远程的警告消息的意思是“我一开始没有这个名字”。也就是说,您要求远程(在本例中为“origin”)删除“refs/tag/Release_7_3_16”,它认为这是一个合理的请求,因此去查找“refs/tag/Release_7_3_16”并发现它不存在。
这并不奇怪,因为标签位于“refs/tags/”(复数“tags”),而不是“refs/tag/”(单数“tag”)。
至于在远程移动标签,您可能需要阅读这个答案

我编辑了问题,因为当我运行原始命令时,根据我的历史记录,我确实正确使用了标签。当我重新运行命令以获取问题的输出时,我犯了一个错误,但那只是我输入时的一个愚蠢错误,所以我已经修复了这个问题。您关于前导冒号表示删除的解释解释了问题;我以为冒号意味着其他东西,将重新阅读有关push的文档。 - simpleuser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接