如何删除远程标签而不影响本地仓库?

5

我希望将源代码库与我的本地标签匹配。这不是要删除本地标签,而是要与远程标签匹配。

要删除本地标签并使我的本地仓库与源相匹配,我需要执行以下操作:

git tag -l | xargs git tag -d
git fetch

我已经本地清理了标记,现在想推送并删除远程没有更新的内容。

我一直在手动完成以下操作:

git tag -l | grep -v "[^v2]" | xargs git tag -d  # remove local tags that don't match a pattern
git push origin :refs/tags/2.2.15      # manually remove those tags on remote
git push origin :refs/tags/2.2.16
git push origin :refs/tags/2.2.17
git push origin :refs/tags/2.2.18
...

但是由于有这么多标签,我觉得这可以用不同的方式完成。问题是,如何从远程存储库中删除您本地没有的标签?


1
这个有帮助吗?(链接为:http://blog.siyelo.com/how-to-bulk-delete-remote-git-tags/) - Travis
1
是的,我想是这样的... git ls-remote --tags origin | awk '/^(.)(\s+)(.[a-z])$/ {print ":" $2}' | xargs git push origin - mimoralea
1
git ls-remote --tags origin | grep -v "[{}$]" | awk '{print ":" $2}' 我还没有能够测试删除,但是这个命令显示了非常有前途的输出... - mimoralea
1个回答

3

我在远程仓库上进行了测试,一切正常。

我使用了cut而不是grep,并将远程标签与本地标签进行比较,然后删除不同的远程标签。

git ls-remote --tags origin | cut -f 2 | xargs basename | comm -23 - <(git tag) | awk '{print ":refs/tags/" $0}'  | xargs git push origin

不是最优雅的东西,但它可以发挥作用。

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