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

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

想法吗?


当前回答

要在存储库中搜索,添加URL参数/搜索?Q =search_terms在repo的根目录,例如:

https://github.com/bmewburn/vscode-intelephense/search?q=phpstorm

在上面的例子中,它在Code中返回2个结果,在Issues中返回160个结果。

其他回答

最近的私有存储库有一个用于搜索该回购的搜索字段。

然而,令人困惑的是,公共存储库似乎无法使用此功能。

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/search并输入“pattern repo:user_name/repo_name”。

例如,在fastai用户的fastai repo中搜索cnn_learner,输入如下:

cnn_learner回购:fastai / fastai

就是这样。唯一的烦恼是你需要额外的点击。它会告诉你:

我们找不到任何与“cnn_learner”匹配的存储库 回购:fastai / fastai '

因为默认情况下,它会搜索与搜索字符串匹配的存储库…

所以只要点击左边的“代码”,它就会显示你想要的东西。

或者直接使用如下URL获取代码搜索结果:

https://github.com/search?q=cnn_learner+repo%3Afastai%2Ffastai&type=code

只需访问该回购的主页,然后在左上方的搜索框中输入您的搜索词。

第一个建议的结果将被标记为“in this repository”。点击它,或者直接按回车键。

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

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