How can I list all tags in my Git repository by the date they were created?
Git 2.8 (March 2016) documents another option dating back to git 1.4.4 (Oct2006).
See commit e914ef0 (05 Jan 2016) by Eric Wong (ele828
).
(Merged by Junio C Hamano -- gitster
-- in commit 108cb77, 20 Jan 2016)
See the new Documentation/git-for-each-ref.txt
For commit and tag objects, the special
creatordate
andcreator
fields will correspond to the appropriate date or name-email-date tuple from thecommitter
ortagger
fields depending on the object type.
These are intended for working on a mix of annotated and lightweight tags.
So using creatordate
works with tags:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Or:
git tag --sort=-creatordate
As I detail in "How to sort git tags by version string order of form rc-X.Y.Z.W?", you can add a sort order to git tag
(since Git 2.0 June 2014).
That sort order includes as field name (listed in git for-each-ref
) taggerdate. That allows for git tag --sort=taggerdate
(mentioned by DarVar below)
As an example, in the git/git
repo it will list the v2.10.0
tag last:
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
The default order would not (git tag
):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
Sorting by tag creation date works with annotated and lightweight tags:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
Also nice output from (without date field):
git log --tags --decorate --simplify-by-decoration --oneline
To see full history with dependencies and striped linear commits (only essential events, like tagging and branching/merging):
git log --graph --decorate --simplify-by-decoration --oneline --all