Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Delete all git remote tags
#Delete local tags.
git tag -l | xargs git tag -d
#Fetch remote tags.
git fetch
#Delete remote tags.
git tag -l | xargs -n 1 git push --delete origin
#Delete local tasg.
git tag -l | xargs git tag -d
@Graham-72

This comment has been minimized.

Copy link

@Graham-72 Graham-72 commented Mar 15, 2015

When I tried this from Git Bash on my Windows PC, line 6 was requiring me to log back in to GitHub for each tag. Is there some way to delete all the tags as a batch?

@Graham-72

This comment has been minimized.

Copy link

@Graham-72 Graham-72 commented Mar 15, 2015

I have found the answer to my question - set up Git Bash credentials as follows:
Enter username and email with
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"

Then use credential helper with
git config --global credential.helper wincred
git config --global credential.helper store

This last line stores password for use by Git Bash each time one is requested.

@robertmhaas

This comment has been minimized.

Copy link

@robertmhaas robertmhaas commented Jun 9, 2015

The "-n 1" in the example above does not seem to be necessary, and removing it makes this much faster.

@wickdninja

This comment has been minimized.

Copy link

@wickdninja wickdninja commented Mar 22, 2017

Confirmed removing -n 1 deletes all tags as a batch which is much faster.

@KSXGitHub

This comment has been minimized.

Copy link

@KSXGitHub KSXGitHub commented Apr 13, 2017

What about this?

#Delete local tags.
git tag -d $(git tag -l)
#Fetch remote tags.
git fetch
#Delete remote tags.
git push origin --delete $(git tag -l) # Pushing once should be faster than multiple times
#Delete local tags.
git tag -d $(git tag -l)
@noxify

This comment has been minimized.

Copy link

@noxify noxify commented May 1, 2017

Works perfect @KSXGitHub

@keesdewit82

This comment has been minimized.

Copy link

@keesdewit82 keesdewit82 commented Jul 10, 2017

@KSXGitHub works very well!

@wyt

This comment has been minimized.

Copy link

@wyt wyt commented Jun 6, 2018

nice.

@ehimsi

This comment has been minimized.

Copy link

@ehimsi ehimsi commented Jun 13, 2018

thanks

@rruprai

This comment has been minimized.

Copy link

@rruprai rruprai commented Mar 4, 2019

When I run git push origin --delete $(git tag -l) # Pushing once should be faster than multiple times, I get the following error. Any suggestions on how to fix this?

Error:

fatal: --delete doesn't make sense without any refs

@heykarimoff

This comment has been minimized.

Copy link

@heykarimoff heykarimoff commented Mar 29, 2019

@userraj

When I run git push origin --delete $(git tag -l) # Pushing once should be faster than multiple times, I get the following error. Any suggestions on how to fix this?

Error:

fatal: --delete doesn't make sense without any refs

You don't have local tags to reference.
Run following:

#Fetch remote tags.
git fetch
#Delete remote tags.
git push origin --delete $(git tag -l)
#Delete local tags.
git tag -d $(git tag -l)
@liuliangsir

This comment has been minimized.

Copy link

@liuliangsir liuliangsir commented Sep 25, 2019

nice, The "git tag -l | xargs git tag -d" in the example above might work better with "grep "

@Paschalis

This comment has been minimized.

Copy link

@Paschalis Paschalis commented Apr 4, 2020

if any of the remote tags do not exist, the delete all approach bails out!

@glevand

This comment has been minimized.

Copy link

@glevand glevand commented Aug 27, 2020

This will get the tags that are on the remote 'origin', then delete those tags:
git ls-remote --tags origin | cut -f 2 | xargs git push --delete origin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.