删除多个git远程标记并按一次

时间:2017-08-22 13:19:48

标签: git tags

在Git中,如何在推送之前删除多个标签?

我知道如何一次使用一个标签。不确定是否可以做多次。

5 个答案:

答案 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)

如果您安装了grepxargs,我找到了一种简单的方法。我无耻地从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