How to get list of latest tags in remote git?

Viewed 51491

There are alot of methods to get latest tags when you have local git repo.

But i want to get list of latest tags on remote repo.

I know about "git ls-remote", and everything is fine when you use tags like x.y.z (where x,y,z are numbers). But when tags looks like "test-x.y.z" and "dev-x.y.z" i noticed that large amount of "test" tags will pull out any new "dev" tags, which is not correct.

So, how would you like solve this?

4 Answers
git ls-remote --tags | awk -F'/' '/[0-9].[0-9].[0-9].*/ { print $3}' | sort -nr | head -n1

Using github api:

curl https://api.github.com/repos/user/repo/tags | jq '.[] .name' | sort -nr | head -n1

These two will get you latest tag, you can increase the list by changing the value at n flag for head pipe. lets say, to get top 10 latest lists head -n10

With Git 2.18 (Q2 2018), git ls-remote learned an option to allow sorting its output based on the refnames being shown.

See commit 1fb20df (09 Apr 2018) by Harald Nordgren (HaraldNordgren).
(Merged by Junio C Hamano -- gitster -- in commit 6c0110f, 08 May 2018)

ls-remote: create '--sort' option

Create a '--sort' option for ls-remote, based on the one from for-each-ref.
This e.g. allows ref names to be sorted by version semantics, so that v1.2 is sorted before v1.10.

So check out those for-each-ref --sort options introduced in Git 2.0 and 2.8, because they apply now to git ls-remote --sort.

Related