如何列出所有包含提交的标签?


227

这个问题类似于如何在git中列出指向特定提交的所有标签,但有一个区别:我希望在每个标签的树中搜索包含特定提交的所有标签,而不是专门搜索标签中标记的文件本身(在这种情况下,仅标记了Makefile更改)。


1
您无法标记特定文件-标记仅指向提交。您可能需要编辑您要解决的问题的更多详细信息。
Mark Longair 2011年


注:在Windows上,请务必使用git 2.0.x的(2014),如果你想git tag --contains崩溃。请在下面
VonC 2014年

Answers:


348
git tag --contains <commit>

2
我已经试过了 但是,如果标签仅包含一个文件,我相信它只会搜索该文件。它不会搜索树。另外,我尝试过的存储库是如此庞大的git保释并得到了SIGKILL'ed。
atx

21
标签不包含文件。它们只是提交的标记。鉴于此,我认为您的反对没有道理。
合金2011年

在那种情况下,由于内存不足,它一定不能向我显示提交。你知道我能克服这个吗?
atx

5
有什么办法可以对远程标签执行此操作?类似于分支机构:git branch -r --contains <commit>
Mike

23

请注意,如果您有大量回购,则需要git 2.0.x(2014年第三季度)才能列出特定提交的所有标签

参见Jean-Jacques Lafaycommit cbc60b6 lanfeust69

git tag --contains:避免堆栈溢出

在大型存储库中,的递归实现contains(commit, commit_list)可能会导致堆栈溢出。用循环替换递归来修复它。

在Windows上,此问题比在Linux上更为明显,而在Linux上,默认情况下堆栈受到更多限制。

另请参见msysGit列表上的该线程


9
没有双关语吗?;-)
MikeSchinkel

3
@MikeSchinkel好吧…… 至少不是故意的
VonC

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.