17.6 删除远程版本库的里程碑

假如向远程版本库推送里程碑后,忽然发现里程碑创建在了错误的提交上,为了防止其他人获取到错误的里程碑,应该尽快将里程碑删除。

删除本地里程碑非常简单,使用git tag-d<tagname>就可以了,但是如何撤销已经推送到远程版本库的里程碑呢?需要登录到服务器上吗?或者需要麻烦管理员吗?不必!可以直接在本地版本库执行命令删除远程版本库中的里程碑。

使用git push命令可以删除远程版本库中的里程碑。用法如下:


命令:git push<remote_url>:<tagname>


该命令的最后一个参数实际上是一个引用表达式,引用表达式一般的格式为<ref>:<ref>。该推送命令使用的引用表达式冒号前的引用被省略,其含义是将一个空值推送到远程版本库对应的引用中,亦即删除远程版本库中相关的引用。这个命令不但可以用于删除里程碑,在下一章还可以用它删除远程版本库中的分支。

下面演示在用户user1的工作区执行下面的命令删除远程共享版本库中的里程碑mytag2。

(1)切换到用户user1工作区。


$cd/path/to/user1/workspace/hello-world


(2)执行推送操作删除远程共享版本库中的里程碑。


$git push origin:mytag2

To file:///path/to/repos/hello-world.git

-[deleted]mytag2


(3)查看远程共享库中的里程碑,发现mytag2的确已经被删除。


$git ls-remote origin my*

60a2f4f31e5dddd777c6ad37388fe6e5520734cb refs/tags/mytag

5dc2fc52f2dcb84987f511481cc6b71ec1b381f7 refs/tags/mytag3

ebcf6d6b06545331df156687ca2940800a3c599d refs/tags/mytag3^{}