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

删除多个git远程标记并推送一次,git,tags,Git,Tags,在Git中,如何在推之前删除多个标记 我知道如何一次只使用一个标签。不确定是否可以执行多个操作。通过指定要删除的所有标记,可以使用一个命令删除多个标记 git tag -d 1.1 1.2 1.3 然后可以推送所有已删除的标记。当然,在按下之前,您可以使用单独的命令删除标记 要推式删除标记,只需列出所有要删除的标记。该命令与删除一个标记的命令相同 git push --delete origin 1.1 1.2 1.3 要在本地删除多个标记,请执行以下操作: git标签-d 简单地说: gi

在Git中,如何在推之前删除多个标记


我知道如何一次只使用一个标签。不确定是否可以执行多个操作。

通过指定要删除的所有标记,可以使用一个命令删除多个标记

git tag -d 1.1 1.2 1.3
然后可以推送所有已删除的标记。当然,在按下之前,您可以使用单独的命令删除标记

要推式删除标记,只需列出所有要删除的标记。该命令与删除一个标记的命令相同

git push --delete origin 1.1 1.2 1.3

要在本地删除多个标记,请执行以下操作:

git标签-d

简单地说:

git tag -d TAG1 TAG2 TAG3
git push ${REMOTE_NAME:-origin} --delete TAG1 TAG2 TAG3
要远程删除多个标记,请执行以下操作:

git推送[-d |--delete][…]

简单地说:

git tag -d TAG1 TAG2 TAG3
git push ${REMOTE_NAME:-origin} --delete TAG1 TAG2 TAG3
TL;医生:

git tag -d TAG1 TAG2 TAG3
git push origin -d TAG1 TAG2 TAG3

如果您安装了
grep
xargs
,我发现了一种简单的方法来实现这一点。我无耻地把这个从你手里拿走了

删除所有具有您要查找的模式的远程标记:

git tag | grep <pattern> | xargs -n 1 -I% git push origin :refs/tags/%
获取仍保留的远程标记:

git fetch

它将删除所有匹配的标记模式

//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*")
如果您有太多的标签(如我们的例子),您可能希望这样做:

git tag -l > tags_to_remove.txt
然后在首选编辑器中编辑文件-查看并删除要保留的标记(如果有) 然后在本地运行它

git tag -d $(cat ./tags_to_remove.txt)
远程:

git push -d origin $(cat ./tags_to_remove.txt)

git-tag-d tag1 tag2 tag3…
我可以做
git-push
多个吗?
git-push-origin:tag1:tag2:tag3…
引用对该要点的评论;
xargs
-i%
参数抛出了一个非法的选项错误:将其替换为诸如
-i%
之类的大写字母可以使其正常工作。很好!对于许多人来说,这将是
git push origin--delete TAG1 TAG2 TAG3
你也可以将其重写为
git push origin-d TAG1 TAG2 TAG3
只是为了给后代添加2p,这是两个命令,而不是一个:首先
git tag-d…
然后
git push origin--delete…
效果非常好。请记住,如果您计划在本地和远程删除,那么首先在远程上删除是有意义的,因为否则git将无法在本地找到标记。是否有方法删除所有与
标记前缀不匹配的标记?