Show which git tag you are on?

I’m having trouble finding out which tag is currently checked out.

When I do:

  • Simpler explanation of path for GIT checkout command
  • How can only the files that were modified in a range of SVN revisions be checked out?
  • git checkout didn't work
  • Is there a way to back to the lastest branch?
  • git checkout automatically merges local modifications
  • Why is the git command to switch branches named “git checkout”?
  • git checkout tag1
    git branch
    

    I can’t seem to find out which tag I’m on. It only logs:

    * (no branch)
    master
    

    Is it possible to find out which tags are checked out? In the above example, this would be tag1.

  • Migrating GIT code base using Eclipse
  • Git mergetool meld on windows using putty
  • Why git prepends a `TYPE LENGTH\0` header in object files?
  • git log not showing updated records
  • How to make git aware of move/deleted/new files automatically
  • Xcode says “Uncommitted Changes” Whenever I try to git pull or push
  • 6 Solutions collect form web for “Show which git tag you are on?”

    Edit: Jakub Narębski has more git-fu. The following much simpler command works perfectly:

    git describe --tags
    

    (Or without the --tags if you have checked out an annotated tag. My tag is lightweight, so I need the –tags.)

    original answer follows:

    git describe --exact-match --tags $(git log -n1 --pretty='%h')
    

    Someone with more git-fu may have a more elegant solution…

    This leverages the fact that git-log reports the log starting from what you’ve checked out. %h prints the abbreviated hash. Then git describe --exact-match --tags finds the tag (lightweight or annotated) that exactly matches that commit.

    The $() syntax above assumes you’re using bash or similar.

    When you check out a tag, you have what’s called a “detached head”. Normally, Git’s HEAD commit is a pointer to the branch that you currently have checked out. However, if you check out something other than a local branch (a tag or a remote branch, for example) you have a “detached head” — you’re not really on any branch. You should not make any commits while on a detached head.

    It’s okay to check out a tag if you don’t want to make any edits. If you’re just examining the contents of files, or you want to build your project from a tag, it’s okay to git checkout my_tag and work with the files, as long as you don’t make any commits. If you want to start modifying files, you should create a branch based on the tag:

    $ git checkout -b my_tag_branch my_tag
    

    will create a new branch called my_tag_branch starting from my_tag. It’s safe to commit changes on this branch.

    git describe is a porcelain command, which you should avoid:

    http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html

    Instead, I used:

    git name-rev --tags --name-only $(git rev-parse HEAD)
    

    This worked for me git describe --tags --abbrev=0

    Show all tags on current HEAD (or commit)

    git tag --points-at HEAD
    

    git log --decorate

    This will tell you what refs are pointing to the currently checked out commit.

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