How to remove all git origin and local tags?
Asked Answered
C

3

200

How do you remove a git tag that has already been pushed? Delete all git remote (origin) tags and Delete all git local tags.

Culosio answered 22/6, 2017 at 14:48 Comment(0)
C
492
  1. Delete All local tags. (Optional Recommended)
    # Clears out all your local 
    git tag -d $(git tag -l)
    
  2. Fetch remote All tags. (Optional Recommended)
    # All remote tags give you a complete list of remote tags locally
    git fetch
    
  3. Delete All remote tags.
    # Note: pushing once should be faster than multiple times
    # Deletes the remote tags concerning the local
    git push origin --delete $(git tag -l) 
    
  4. Delete All local tags.
    # Deletes the local tags after fetch 
    git tag -d $(git tag -l)
    
Culosio answered 22/6, 2017 at 14:48 Comment(15)
If you got error message "argument list too long", which you probably would if you're trying to clear tags Use git tag -d $(git tag -l | head 100)Courthouse
What's the difference between option 1 and 4? They are both git tag -d $(git tag -l).Disposal
1) clears out all your local tags 2) retrieves all remote tags giving you a complete list of remote tags locally 3) deletes the remote tags with reference to the local list 4) deletes the local tags from step 2Countermove
minor fix for head syntax git tag -d $(git tag -l | head -n 100)Regnal
I think on 3. it should be git push --delete origin $(git tag -l)Thither
git tag -d $(git tag -l) fails on git 2.23 with error: switch `l' is incompatible with --deleteDiscoverer
I had 90K local tags, so using head was not acceptable, the syntax that worked for me was git tag -l | xargs -L1 git tag --deleteStamin
This mostly worked for me, but I had some tags on remote that didn't fetch to local for some reason. I had to do git fetch --tags --force in lieu of step 2, and that worked.Karlise
Same as @turbanoff, 3rd step didn't work. I end up pushing those changes and it workedLeavelle
For remote tags it would be better to tags="$(git tag -l)" && test -n "$tags" && printf " :refs/tags/%s " $tags | xargs git push origin in case any tag has the same name as some branch referencePhosphaturia
on windows Powershell i had this issue git tag -d $(git tag -l) fails on git 2.23 with error: switch l'` i run it with wsl or git-bash and it workedStraticulate
git push origin --delete $(git tag -l) failed for me with error fatal: --delete doesn't make sense without any refs since git tag showed no local tags for me. So, I had to delete the remote tags manually. Here's how I did it.Jealousy
I got error: switch l' : incompatible with --delete`Boon
If you have a ton of tags, skip step 1. Complete waste of time.Kandace
This won't always work because if you have local tags which no longer point to valid objects, then git tag -l will not print any of the ok tags and will just print errors for the bad tags rather than listing them: error: refs/tags/badtag does not point to a valid object! Is there some porcelain command that will list all tags without throwing these errors for the bad ones?Leidaleiden
T
21

For windows using command prompt:

Deleting local tags:

for /f "tokens=* delims=" %a in ('git tag -l') do git tag -d %a

Deleting remote tags:

for /f "tokens=* delims=" %a in ('git tag -l') do git push --delete origin %a
Thither answered 15/8, 2019 at 13:22 Comment(4)
When using PS: git tag -l | %{git tag -d $_}Silent
For local tags: git tag -l | xargs git tag -dPiassava
@Piassava - xargs is not native windows command and should be installed additionaly.Thither
Wow, works, but isn't fast at all! About 5 dels per second on local trags deleting.Vexillum
J
7

The main answer didn't work for me.

This failed:

git push origin --delete $(git tag -l)

Error:

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

That's because I had NO local tags!

git tag -l showed nothing, even after running git fetch to supposedly fetch all remote tags!

BUT, the following worked!:

Under certain, rare circumstances, where you have remote tags on GitHub but no local tags, for instance, you may need to manually specify the tags to delete.

Go to https://github.com/YOUR_USERNAME/YOUR_REPO_NAME/tags (ex: https://github.com/ElectricRCAircraftGuy/sublime_gcode/tags) to view all remote tags.

Mine showed tags 1.0.0 and 1.0.1. Delete them manually with:

To delete remote tags manually:

# General format to delete a **remote** tag on remote named "origin"
git push --delete origin <tag_name>

# My case exactly
git push --delete origin 1.0.0
git push --delete origin 1.0.1

To delete local tags manually:

# list all tags
git tag
# OR (same thing): 
git tag -l

# delete a local tag
git tag -d <tag_name>
# Example: delete local tag named `1.0.0`
git tag -d 1.0.0

Source where I learned all of this: https://devconnected.com/how-to-delete-local-and-remote-tags-on-git/

Jealousy answered 24/3, 2022 at 7:23 Comment(2)
I'm just getting "remote: Repository not found fatal: repository 'https://...git not found" which seems odd, as via IntelliJ it is workingBryna
Should execute fetch force before: git fetch --tags --forceConfident

© 2022 - 2024 — McMap. All rights reserved.