-
-
Save shsteimer/7257245 to your computer and use it in GitHub Desktop.
#delete all the remote tags with the pattern your looking for, ie. DEV- | |
git tag | grep <pattern> | xargs -n 1 -i% git push origin :refs/tags/% | |
#delete all your local tags | |
git tag | xargs -n 1 -i% git tag -d % | |
#fetch the remote tags which still remain | |
git fetch |
Run the following command If you get the message delete doesn't make sense without any refs
when trying to delete remote tags:
git push origin --delete $(git ls-remote --tags | grep "tag_prefix.*[^}]$" | cut -f 2)
git ls-remote --tags
will output all remote tags.grep "*tag_prefix.*[^}]$"
will ignore tags with annotated dereference operator "^{}" since including them errored out.cut -f 2
keeps the tag name column only
I accomplished this in posh-git PowerShell on Windows with this if anyone is needing to do the same:
git tag --list 'v[0-9].[1-9].*' --no-column | % { git tag -d $_; git push origin --delete $_ }
Note that I was specifying all builds from v1.1.0 and up, deleting them locally, and from the remote.
Thank you for all these great commands!
Regarding @kerryj89 's version, you can modify it to work with any remote:
git push upstream --delete $(git ls-remote --tags upstream | grep "tag_prefix.*[^}]$" | cut -f 2)
Thanks @kerryj89. This worked fine on macOS! 👏
You can try this. It will delete all matching tag patterns. E.g. for deleting tags starting with v1.0, use
git tag -d $(git tag -l "v1.0*")
Delete remote:
git push -d $(git tag -l "tag_prefix*")
Delete local:git tag -d $(git tag -l "tag_prefix*")
Thank You @chinmaya-kony & @luwes.
Thank You All for the help🙏🏻
@luwes
git push origin --delete $(git tag -l "*v3.[2]*-beta*")