On Thu, Sep 03, 2015 at 08:53:16PM -0600, Jesse Hopkins wrote: > Looking for suggestions on how to determine the tag that was used to > checkout a git repo to its associated commit, particularly in the case > where multiple tags might point to the same commit. > > I've had a look at git-name-rev and git-describe, and both seem useful so > long as there's only one tag pointing to the commit of interest. However, > I'm still coming up to speed on their behavior in the multiple tag case > (mainly by experimentation). > > It seems to me that when checking out to a tag, Git does not record the > *name* of the tag anywhere, but rather sets HEAD to the de-referenced > commit SHA-1. As far as I can tell, it is not possible to recover the > original name of the tag in the case of multiple tags on the same commit. > Is my conclusion correct? > > The reason I ask is that we have a build environment where it is likely > that multiple tags will get set by various groups in our main 'truth' Git > repo. We are using some scripting that would like to know the *name* of > the tag used for checkout (this has been working well for us so far as long > as we checkout against branches). > > Is there perhaps some other means of doing a checkout to tag that DOES > record the name of the tag? If not, I imagine we might need some external > means to record the checked out tag, which is not out of the question. Have you considered looking in the reflog? When I checkout a tag, "git reflog -1" gives something like: 989d251 HEAD@{0}: checkout: moving from master to v0.9.2 Since whitespace isn't permitted in tag names you can do something like: tag=$(git reflog -1) tag=${tag##* } git cat-file tag "$tag" >/dev/null 2>&1 || echo "not a tag!" -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html