Skip to content

Instantly share code, notes, and snippets.

@loisaidasam
Last active January 10, 2025 09:49
Show Gist options
  • Save loisaidasam/b1e6879f3deb495c22cc to your computer and use it in GitHub Desktop.
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!

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