不是在Git存储库中,而是在GitHub中——我如何搜索特定存储库/分支的提交消息?


当前回答

简单的回答是,你不能直接在github.com网站上搜索提交消息。目前,我们推荐这个线程中其他人提出的本地git grep解决方案。

在某个时间点上,GitHub确实为单个存储库提供了git grep风格的提交消息搜索。不幸的是,这种方法暴露了拒绝服务,可能导致文件服务器不可访问。出于这个原因,我们删除了git grep搜索。

目前粗略估计,GitHub的提交次数大约在800亿次左右。尽管谷歌的工程师们在背后嘲笑我们,但这在ElasticSearch中存储的文档数量相当大。我们很想让这个数据集可以搜索,但这不是一个微不足道的项目。

其他回答

由于这已经从GitHub中删除,我一直在Linux上使用gitk来做这件事。

从终端转到存储库并键入gitk。

在GUI的中间,有一个搜索框。它提供了一个很好的过滤器:

范围包含,触摸路径,添加/删除字符串,改变行匹配

匹配类型—Exact/IgnCase/Regexp

搜索字段-所有字段/标题/评论/提交者

你过去可以这样做,但GitHub在2013年年中的某个时候删除了这个功能。要在本地实现这一点,您可以这样做:

git log -g --grep=STRING

(如果您想搜索其他分支和悬空提交,请使用-g标志。)

-g, --walk-reflogs
    Instead of walking the commit ancestry chain, walk reflog entries from
    the most recent one to older ones.

这已从GitHub删除。我使用:

$git log --all --oneline | grep "search query"

你也可以通过作者筛选:

$git log --all --oneline --author=rickhanlonii | grep "search query"

您可以对谷歌爬取的存储库执行此操作(结果因存储库而异)。

搜索所有爬取存储库的所有分支,查找“更改许可”

“变更许可证”网站:https://github.com/*/*/commits

搜索所有爬虫库的主分支“change license”:

“变更许可证”网站:https://github.com/*/*/commits/master

搜索所有爬过的twitter存储库的主分支“更改许可证”

“变更许可证”网站:https://github.com/twitter/*/commits/master

搜索twitter/some_project存储库的所有分支,查找“change license”

“变更许可证”网站:https://github.com/twitter/some_project/commits

从搜索代码的帮助页面来看,这似乎还不可能。

您可以在存储库中搜索文本,包括选择要搜索的文件或路径的能力,但不能指定要在提交中搜索。

也许可以向他们提出这个建议?