有一种方法来grep的东西在一个Github项目的代码?

我可以拉源和grep它在本地,但我想知道它是否可能通过网络界面或第三方替代方案。

想法吗?


当前回答

2021年12月更新:搜索再次改进,搜索精确字符串,支持子字符串匹配和特殊字符或regexp。

但仅在cs.github.com,仍在测试(等待名单适用)


更新2013年1月:一个全新的搜索已经到来!,根据elasticsearch.org:

在ruby repo中搜索stat将被表示为stat repo:ruby/ruby,现在只会workTM。 (repo名称不区分大小写:test repo:wordpress/wordpress返回与test repo:wordpress/wordpress相同)

将:

你还有很多其他搜索的例子,基于关注者,或者基于分叉,或者……


2012年7月更新(以前的Lucene搜索和糟糕的代码索引,加上破碎的GUI,保存在这里存档):

搜索(基于SolrQuerySyntax)现在更允许了,还有可怕的“无效搜索查询”。Try quotes it."当使用默认搜索选择器"Everything"时就会消失:)

(我想我们都能比蒂姆·皮斯(Tim Pease)做得更好,他的目标之一是“改进所有GitHub属性的搜索体验”,我当时确实提到了这个堆栈溢出的问题;))

下面是ruby代码中的grep示例:它将查找回购和用户,但也可以查找我首先想要搜索的东西:代码!


前一期(2012年9月=> 2012年3月)初步解答及说明

你可以使用高级搜索GitHub表单:

从下拉菜单和中选择代码、存储库或用户 使用为该搜索类型列出的相应前缀。

例如,使用repo:username/repo-name指令将搜索限制在代码库中。 最初的“高级搜索”页面包括以下部分:

代码搜索: 代码搜索将查看GitHub上公开托管的所有代码。你也可以通过: 语言语言: 存储库名称(包括用户名): 文件路径:

所以如果你选择“Code”搜索选择器,那么你的查询grepping在一个repo文本将工作:


GitHub令人难以置信的无用之处是:

如果你忘记放置正确的搜索选择器(这里是“Code”),你会得到一个错误消息: “无效的搜索查询。试着引用它。”

the error message doesn't help you at all. No amount of "quoting it" will get you out of this error. once you get that error message, you don't get the sections reminding you of the right association between the search selectors ("Repositories", "Users" or "Language") and the (right) search filters (here "repo:"). Any further attempt you do won't display those associations (selectors-filters) back. Only the error message you see above... The only way to get back those arrays is by clicking the "Advance Search" icon:

the "Everything" search selector, which is the default, is actually the wrong one for all of the search filters! Except "language:"... (You could imagine/assume that "Everything" would help you to pick whatever search selector actually works with the search filter "repo:", but nope. That would be too easy) you cannot specify the search selector you want through the "Advance Search" field alone! (but you can for "language:", even though "Search Language" is another combo box just below the "Search for" 'type' one...)


所以,用户的体验通常是这样的:

you click "Advanced Search", glance over those sections of filters, and notice one you want to use: "repo:" you make a first advanced search "repo:jruby/jruby stat", but with the default Search selector "Everything" => FAIL! (and the arrays displaying the association "Selectors-Filters" is gone) you notice that "Search for" selector thingy, select the first choice "Repositories" ("Dah! I want to search within repositories...") => FAIL! dejected, you select the next choice of selectors (here, "Users"), without even looking at said selector, just to give it one more try... => FAIL! "Screw this, GitHub search is broken! I'm outta here!" ... (GitHub advanced search is actually not broken. Only their GUI is...)


所以,概括一下,如果你想“grep Github项目代码中的一些东西”,如OP Ben Humphreys,不要忘记选择“代码”搜索选择器…

其他回答

有一个非常好的项目叫做github1s @ https://github.com/conwnet/github1s。

基本上,您可以将任何repo的url更改为https://github.com/microsoft/vscode到https://github1s.com/microsoft/vscode,然后您可以使用编辑器中的内置搜索功能,在存储库中搜索任何内容。

GitHub文档说-

匹配文件中出现“Octocat”的代码 内容。 Octocat in:path匹配文件>路径中出现“Octocat”的代码。 Octocat in:file,path匹配>文件内容或文件路径中出现“Octocat”的代码。

2021年12月更新:搜索再次改进,搜索精确字符串,支持子字符串匹配和特殊字符或regexp。

但仅在cs.github.com,仍在测试(等待名单适用)


更新2013年1月:一个全新的搜索已经到来!,根据elasticsearch.org:

在ruby repo中搜索stat将被表示为stat repo:ruby/ruby,现在只会workTM。 (repo名称不区分大小写:test repo:wordpress/wordpress返回与test repo:wordpress/wordpress相同)

将:

你还有很多其他搜索的例子,基于关注者,或者基于分叉,或者……


2012年7月更新(以前的Lucene搜索和糟糕的代码索引,加上破碎的GUI,保存在这里存档):

搜索(基于SolrQuerySyntax)现在更允许了,还有可怕的“无效搜索查询”。Try quotes it."当使用默认搜索选择器"Everything"时就会消失:)

(我想我们都能比蒂姆·皮斯(Tim Pease)做得更好,他的目标之一是“改进所有GitHub属性的搜索体验”,我当时确实提到了这个堆栈溢出的问题;))

下面是ruby代码中的grep示例:它将查找回购和用户,但也可以查找我首先想要搜索的东西:代码!


前一期(2012年9月=> 2012年3月)初步解答及说明

你可以使用高级搜索GitHub表单:

从下拉菜单和中选择代码、存储库或用户 使用为该搜索类型列出的相应前缀。

例如,使用repo:username/repo-name指令将搜索限制在代码库中。 最初的“高级搜索”页面包括以下部分:

代码搜索: 代码搜索将查看GitHub上公开托管的所有代码。你也可以通过: 语言语言: 存储库名称(包括用户名): 文件路径:

所以如果你选择“Code”搜索选择器,那么你的查询grepping在一个repo文本将工作:


GitHub令人难以置信的无用之处是:

如果你忘记放置正确的搜索选择器(这里是“Code”),你会得到一个错误消息: “无效的搜索查询。试着引用它。”

the error message doesn't help you at all. No amount of "quoting it" will get you out of this error. once you get that error message, you don't get the sections reminding you of the right association between the search selectors ("Repositories", "Users" or "Language") and the (right) search filters (here "repo:"). Any further attempt you do won't display those associations (selectors-filters) back. Only the error message you see above... The only way to get back those arrays is by clicking the "Advance Search" icon:

the "Everything" search selector, which is the default, is actually the wrong one for all of the search filters! Except "language:"... (You could imagine/assume that "Everything" would help you to pick whatever search selector actually works with the search filter "repo:", but nope. That would be too easy) you cannot specify the search selector you want through the "Advance Search" field alone! (but you can for "language:", even though "Search Language" is another combo box just below the "Search for" 'type' one...)


所以,用户的体验通常是这样的:

you click "Advanced Search", glance over those sections of filters, and notice one you want to use: "repo:" you make a first advanced search "repo:jruby/jruby stat", but with the default Search selector "Everything" => FAIL! (and the arrays displaying the association "Selectors-Filters" is gone) you notice that "Search for" selector thingy, select the first choice "Repositories" ("Dah! I want to search within repositories...") => FAIL! dejected, you select the next choice of selectors (here, "Users"), without even looking at said selector, just to give it one more try... => FAIL! "Screw this, GitHub search is broken! I'm outta here!" ... (GitHub advanced search is actually not broken. Only their GUI is...)


所以,概括一下,如果你想“grep Github项目代码中的一些东西”,如OP Ben Humphreys,不要忘记选择“代码”搜索选择器…

谷歌允许您在项目中搜索,但不包括代码:(

网站:https://github.com/CreateJS/EaselJS测试

虽然@VonC的答案适用于一些存储库,但不幸的是,对于许多存储库,您现在还不能。Github只是没有索引他们(最初由@emddudley评论)。他们的网站上没有说明这一点,但如果你寻求支持,他们会告诉你:

发件人:蒂姆·皮斯 我们已经停止在codesearch索引中添加新推送的代码。代码的数量已经超过了我们当前的搜索索引,我们正在努力转向一个更可扩展的搜索架构。很抱歉给你添麻烦了。我们还不知道这个新的搜索索引何时会启动并运行,但当它准备就绪时,我们会发布一篇博客文章(https://github.com/blog)。

令人恼火的是,除了缺少结果(也可能是由于错误的查询)之外,没有办法告诉哪些存储库没有被索引。

也没有办法跟踪这个问题,除了等待他们的博客(或在这里看SO)。

发件人:蒂姆·皮斯 恐怕我们的问题跟踪器是内部的,但一旦新的搜索索引启动并运行,我们就会通知您。