我想让原点与我的本地标签相匹配。这不要与修剪本地标签混淆,而是远程修改。
修剪本地标记并使我的本地存储库匹配来源:
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
...
但是有这么多标签我觉得这可以用不同的方式完成。 那么问题是,如何从远程存储库中删除那些本地没有的标记?
答案 0 :(得分:1)
刚刚在远程仓库上测试它并且工作正常。
我使用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
这不是世界上最优雅的东西,但它确实有效。