264
votes

This question is similar to How to list all tags pointing to a specific commit in git, but with one difference: I wish to search for all tags that contain a specific commit within the tree of each tag, not specifically the files marked in the tag itself (in this case, only the Makefile change has been tagged).

2
You can't tag a particular file - tags only point to commits. You might want to edit your question with more details of the problem that you're really trying to solve.Mark Longair
Note: on Windows, make sure to use git 2.0.x (2014) if you want git tag --contains to not crash. See my answer belowVonC

2 Answers

410
votes
git tag --contains <commit>
25
votes

Note that you need git 2.0.x (Q3 2014) in order to list all tags for a certain commit if you have a large repo

See commit cbc60b6 by Jean-Jacques Lafay (lanfeust69):

git tag --contains: avoid stack overflow

In large repos, the recursion implementation of contains(commit, commit_list) may result in a stack overflow. Replace the recursion with a loop to fix it.

This problem is more apparent on Windows than on Linux, where the stack is more limited by default.

See also this thread on the msysGit list.