在Git中,如何在推送之前删除多个标签?
我知道如何一次使用一个标签。不确定是否可以做多次。
答案 0 :(得分:25)
要在本地删除多个代码:git tag:
git tag -d< tagname> ...
如此简单:
git tag -d TAG1 TAG2 TAG3
远程删除多个代码:git push:
git push [-d | --delete] [< repository>并[d的Refspec> ...]]
如此简单:
git push ${REMOTE_NAME:-origin} --delete TAG1 TAG2 TAG3
答案 1 :(得分:7)
如果您安装了grep
和xargs
,我找到了一种简单的方法。我无耻地从https://gist.github.com/shsteimer/7257245获取此信息。
使用您要查找的模式删除所有远程标记:
git tag | grep <pattern> | xargs -n 1 -I% git push origin :refs/tags/%
删除所有本地代码:
git tag | xargs -n 1 -I% git tag -d %
获取仍然存在的远程标记:
git fetch
答案 2 :(得分:6)
如果标签太多(例如在我们的示例中),则可能需要这样做:
git tag -l > tags_to_remove.txt
然后在您的首选编辑器中编辑文件-查看并删除要保留的标签(如果有) 然后在本地运行
git tag -d $(cat ./tags_to_remove.txt)
并远程:
git push -d origin $(cat ./tags_to_remove.txt)
答案 3 :(得分:5)
它将删除所有匹配的标记模式。
//Delete remote:
git push -d origin $(git tag -l "tag_prefix*")
// Delete local:
git tag -d $(git tag -l "tag_prefix*")
// Examples:
git tag -d $(git tag -l "v1.0*")
git push -d origin $(git tag -l "*v3.[2]*-beta*")
答案 4 :(得分:3)
您可以通过指定要删除的所有标记
,使用一个命令删除多个标记git tag -d 1.1 1.2 1.3
然后您可以推送所有已删除的标签。当然,您可以在推送之前使用单独的命令删除标签。
要推送删除标记,只需列出要删除的所有标记。删除一个标签
的命令相同git push --delete origin 1.1 1.2 1.3