How to display last N tags in GIT

Is there a way to display last N tags in git?

I am not interested in a pattern because this can change. For example let’s say I have these tags and I want to get last 3 of them:

  • Unable to access Github through Browser or Console due to SSL certificate issue
  • git rebase from a url/path
  • Trusted development path in git with signatures
  • Pushing all local branches to other remotes in Git
  • Is there a URL in github that will show exactly the hash of the current HEAD?
  • Escaping space in directory name while doing git sparse checkout
  • v1.0.0
    v1.0.1
    v2.0.0
    v2.1.0
    v3.0.0
    

    Based on the Pro Git seems that this cannot be achieved. Or I am missing something?

  • Easier way to do checkouts in git than to have to type the full commit's hash id
  • Mirroring repository via fileserver
  • Git Pull While Ignoring Local Changes?
  • Can I merge a branch into an old commit and preserve a tag?
  • How do I commit only some files?
  • What is the meaning of this Eclipse icon?
  • 2 Solutions collect form web for “How to display last N tags in GIT”

    This can be done with git tag --sort option which is introduced in Git v 2.0.0.

    Note: I’m using the minus sign - to get reverse sorting order (default is oldest to newest).

    Replace <number> with an actual natural number.

    UNIX, Linux, OS X

    git tag --sort=-version:refname | head -n <number>
    

    From man head:

     head [-n count | -c bytes] [file ...]
    

    This filter displays the first count lines or bytes of each of the specified files, or of the standard input if no files are specified.
    If count is omitted it defaults to 10.

    Windows, the UNIX way

    1. Install Cygwin
    2. See answer for UNIX

    Windows, native way

    git tag --sort=-version:refname | Select -First <number>
    

    (Info on Select command was found on serverfault)

    From git reference:

    --sort=<type>
    

    Sort in a specific order. Supported type is “refname” (lexicographic order), “version:refname” or “v:refname” (tag names are treated as versions). The “version:refname” sort order can also be affected by the “versionsort.prereleaseSuffix” configuration variable. Prepend “-” to reverse sort order. When this option is not given, the sort order defaults to the value configured for the tag.sort variable if it exists, or lexicographic order otherwise.

    There is no single command for this. You have to use a combination of the describe and rev-list commands for this.

    git describe --tags $(git rev-list --tags --max-count=3)
    

    Got the answer from here: https://stackoverflow.com/a/7979255/2336787

    Git Baby is a git and github fan, let's start git clone.