刚刚准备发一个测试包,可是当我 git tag v1.1.x 然后 git push --tag 一把唆的时候发现不对劲, 只打了一个 v1.1.x 的 tag 啊为啥推送了一大堆?坏,我又闯祸了。我估计是之前产品要求降版本然后同事辛辛苦苦一个一个删掉的远程 tag 因为我本地没删又给人家推送回去了(狗头

经过小伙伴的提点,知道了 xargs 这个命令,我们可以利用它来批量删除 tag,具体操作如下

git tag -l "v5.*" | xargs git tag -d

这样就能够直接将 v5. 为前缀的 tag 全部删除了,我们删除远程 tag 的命令是 git push origin :refs/tags/v5.1.2 对吧,这里直接写到 xargs 是没办法用的,xargs 默认是添加一个新的参数,但是我们这里是要拼接参数,于是通过查手册我们发现 xargs 是有一个 -I 的参数可以用来指定替换参数的。

git tag -l "v5.*" | xargs -I {} git push origin :refs/tags/{}