有没有一种方法可以在 Github 项目的代码中搜索某些内容?
我可以拉取源代码并在本地使用 grep 进行搜索,但我想知道是否可以通过 Web 界面或第三方替代方案实现。
有什么好的思路吗?
有没有一种方法可以在 Github 项目的代码中搜索某些内容?
我可以拉取源代码并在本地使用 grep 进行搜索,但我想知道是否可以通过 Web 界面或第三方替代方案实现。
有什么好的思路吗?
(正如holydragon在评论中所指出的,这确实需要先登录GitHub)
去年在GitHub Universe上,我们宣布了GitHub代码搜索和导航体验的全面改版,由我们从头开始构建的全新代码搜索引擎驱动。stat repo:ruby/ruby
,现在将会正常工作(TM)。
(repo名称不区分大小写:test repo:wordpress/wordpress
返回的结果与test repo:Wordpress/Wordpress
相同)
会给:
2012年7月更新(Lucene搜索和糟糕的代码索引的旧日子,加上破碎的GUI,保存在这里以供存档):
搜索(基于SolrQuerySyntax)现在更宽松,当使用“默认”搜索选择器“Everything”时,不再出现可怕的“无效搜索查询。尝试引用它。”的提示:)
(我想我们都应该感谢Tim Pease,他在他的目标之一中提到了“改进所有GitHub属性的搜索体验”,当时我也提到了这个Stack Overflow问题;))
这是一个在Ruby代码中进行grep的示例:它将查找存储库和用户,但还会查找我最初想要搜索的代码!
初始答案和前一个问题的说明(2012年9月=>2012年3月)
您可以使用高级搜索GitHub表单:
代码
、仓库
或用户
,并例如,使用repo:用户名/仓库名称
指令将搜索限制在代码仓库中。
初始的“高级搜索”页面包括以下部分:
所以,如果您选择了“Code”搜索选择器,那么您在存储库中搜索文本的查询将起作用。代码搜索:
代码搜索将浏览GitHub上公开托管的所有代码。您还可以按以下方式进行过滤:
- 语言
language:
- 仓库名称(包括用户名)
repo:
- 文件路径
path:
Everything
"这个搜索选择器,虽然是默认的,但实际上对于所有的搜索过滤器来说都是错误的!除了"language:
"...(你可以想象/假设"Everything
"会帮助你选择与搜索过滤器"repo:
"实际配合的搜索选择器,但事实并非如此。那样太简单了)高级搜索
"字段单独指定所需的搜索选择器是不可能的!(但对于"language:
"来说是可以的,尽管"Search Language
"是在"Search for
" 'type' 下面的另一个组合框中...)
所以,用户的体验通常如下:
Code
"搜索选项...最近的私有
代码库有一个搜索字段,用于搜索该代码库。
令人困惑的是,似乎这个功能对于公共
代码库并不可用。
更新
下面的书签小工具因XHR问题和API更改而失效。
幸运的是,Github现在有了一个全新的代码搜索,非常出色地完成了这项工作。
Checkout this voodoo: Github code search userscript.
Follow the directions there, or if you hate bloating your browser with scripts and extensions, use my bookmarkified bundle of the userscript:
javascript:(function(){var s='https://raw.githubusercontent.com/skratchdot/github-enhancement-suite/master/build/github-enhancement-suite.user.js',t='text/javascript',d=document,n=navigator,e;(e=d.createElement('script')).src=s;e.type=t;d.getElementsByTagName('head')[0].appendChild(e)})();doIt('');void('');
Save the source above as the URL of a new bookmark. Browse to any Github repo, click the bookmark, and bam: in-page, ajaxified code search.
CAVEAT Github must index a repo before you can search it.
Abracadabra...
Here's a sample search from the annotated ECMAScript 5.1 specification repository:
尽管@VonC的回答适用于某些存储库,但遗憾的是对于许多存储库,您目前无法这样做。Github简单地没有将它们索引(正如最初由@emddudley所评论的)。他们在网站上没有声明这一点,但如果您向支持人员询问,他们会告诉您:
发件人:Tim Pease
我们已经停止将新推送的代码添加到我们的代码搜索索引中。代码量已超出了我们当前的搜索索引,我们正在努力转移到更具可扩展性的搜索架构。很抱歉给您带来不便。我们还不知道什么时候会启动这个新的搜索索引,但准备好后,将发布一篇博客文章(https://github.com/blog)。
令人恼火的是,除了缺少结果(这也可能来自错误的查询)之外,没有办法知道哪些存储库未被索引。
此外,除了等待他们博客中的更新(或在这里关注),没有其他方法可以追踪这个问题:
发件人:Tim Pease
很遗憾,我们的问题跟踪器是内部的,但我们可以在新的搜索索引准备好时立即通知您。
有一个非常好的项目叫做github1s,位于https://github.com/conwnet/github1s.
基本上你可以把任何存储库的url从 https://github.com/microsoft/vscode
改为 https://github1s.com/microsoft/vscode
, 然后你就可以使用编辑器内置的搜索功能,搜索存储库中的任何内容。
github.dev
上。所以你可以在 https://github.dev/microsoft/vscode
查看代码。更多信息请阅读此处。 - Tal Jacob - Sir Jacquesfastai
的fastai
仓库中搜索cnn_learner
,请输入以下内容:
cnn_learner repo:fastai/fastai
就是这样。唯一的烦恼是你需要额外的一次点击。它会告诉你:只需使用SourceGraph.com代替在GitHub中搜索,或安装其扩展程序:
我使用免费的Sourcegraph Chrome扩展程序在Github存储库中搜索源代码。
我浏览了SourceForge Chrome扩展程序文档,并通过阅读一些Github代码库搜索文档来了解如何搜索Github的搜索引擎中的目录名称。