Skip to content

Instantly share code, notes, and snippets.

@loisaidasam
Last active August 3, 2025 13:13
Show Gist options
  • Select an option

  • Save loisaidasam/b1e6879f3deb495c22cc to your computer and use it in GitHub Desktop.

Select an option

Save loisaidasam/b1e6879f3deb495c22cc to your computer and use it in GitHub Desktop.
Sort git tags by semver

If you're like me and you use semver for versioning your tags, you probably hate when you do this:

$ git tag -l
0.1.0
0.10.0
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.7.1
0.7.2
0.8.0
0.8.1
0.8.2
0.8.3
0.8.4
0.8.5
0.8.6
0.9.0

because the 0.10.0 tag is hiding way up near the top and you might not even see it.

Here's the solution, create a file on your $PATH (maybe in your ~/bin dir) called git-tag-sort with the contents of the file below, and you should be able to do this:

$ git tag-sort 
0.1.0
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.7.1
0.7.2
0.8.0
0.8.1
0.8.2
0.8.3
0.8.4
0.8.5
0.8.6
0.9.0
0.10.0

Have fun!

#!/bin/bash
git tag --sort=v:refname
@designermonkey
Copy link

git tag | tr - \~ | sort -V | tr \~ -

I cannot believe after trying to figure this out I finally saw that line and it blew my mind.

@paulcervov
Copy link

git tag | tr - \~ | sort -V | tr \~ -

Only this ๐Ÿ‘† works correct.

0.0.1
0.0.2-develop
0.0.2

๐Ÿ‘ Thanks!

@ArwynFr
Copy link

ArwynFr commented Aug 3, 2025

Just my two cents for lazy readers:

  • If you're using powershell or cmd, you need to invoke bash: bash -c "git tag | tr - \~ | sort -V | tr \~ -"
  • You can have the newest version first by reversing sort: git tag | tr - \~ | sort -rV | tr \~ -

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment