有没有办法在Github项目的代码中使用grep?
我可以拉动源并在本地grep它,但我想知道是否可以通过网络界面或第三方替代方案。
想法?
答案 0 :(得分:236)
2013年1月更新: brand new search has arrived! ,基于 elasticsearch.org :
在ruby仓库中搜索stat将表示为 stat repo:ruby/ruby
,现在只需 TM 。<登记/>
(回购名称不区分大小写:test repo:wordpress/wordpress
返回与test repo:Wordpress/Wordpress
)
会给:
您还有许多其他搜索示例,基于on followers或on forks,或者......
2012年7月更新(Lucene搜索的旧时代和糟糕的代码索引,加上破碎的GUI,保存在这里进行存档):
搜索(基于SolrQuerySyntax)现在更加宽松,当使用默认搜索选择器“Everything”时,可怕的“Invalid search query. Try quoting it.
”消失了:)
(我想我们的所有人都可以 Tim Pease ,其目标之一是"hacking on improved search experiences for all GitHub properties“和I did mention this Stack Overflow question;)< / p>
以下是ruby代码中grep的示例:它将查找repos和用户,但还我想要搜索的内容:代码!
前一期的初步答复和说明(2012年9月=&gt; 2012年3月)
您可以使用advanced search GitHub form:
Code
,Repositories
或Users
例如,使用 repo:username/repo-name
指令将搜索范围限制为代码存储库。
最初的“Advanced Search
”页面包含以下部分:
代码 搜索:
代码搜索将查看GitHub上公开托管的所有代码。您也可以按:
过滤
- 语言
language:
- 存储库名称(包括用户名)
repo:
- 文件路径
path:
因此,如果您选择“Code
”搜索选择器,那么您在greo中搜索文本的查询将会起作用:
来自GitHub的令人难以置信的 无用是:
Code
”),您将收到一条错误消息:Invalid search query. Try quoting it.
”
错误消息对您没有任何帮助
没有多少“quoting it
”可以帮助您摆脱此错误。
一旦收到该错误消息,您就不会看到这些部分提醒您搜索选择器(“Repositories
”,“{{1}之间的正确关联}“或”Users
“)和(右)搜索过滤器(此处为”Language
“)。
您所做的任何进一步尝试都不会显示这些关联(选择器 - 过滤器)。只有您在上面看到的错误消息...
获取这些数组的唯一方法是单击“repo:
”图标:
“Advance Search
”搜索选择器(默认情况下)实际上是所有搜索过滤器的错误! “Everything
”除外
(您可以想象/假设“language:
”可以帮助您选择实际使用搜索过滤器“Everything
”的任何搜索选择器,但是没有。这太简单了。
您无法单独通过“repo:
”字段指定所需的搜索选择器!
(但您可以使用“Advance Search
”,即使“language:
”是“Search Language
”'类型'正下方的另一个组合框...)
因此,用户的体验通常如下:
Search for
”,浏览过滤器的这些部分,并注意您要使用的部分:“Advanced Search
”repo:
”,但使用默认搜索选择器“repo:jruby/jruby stat
”
=&GT; Everything
! (显示关联“选择器 - 过滤器”的数组消失)FAIL
”(“Dah!我想在存储库中搜索...”)Repositories
<!/ LI>
FAIL
”),甚至没有看到所述选择器,只是为了再试一次... Users
<!/ LI>
所以,回顾一下,如果你想“在Github项目代码中找到某些东西”,作为OP Ben Humphreys,请不要忘记选择“FAIL
”搜索选择器。
答案 1 :(得分:22)
最近的私人存储库有一个搜索字段,用于搜索该存储库。
令人费解的是,看起来公共存储库无法使用此功能。
答案 2 :(得分:20)
<强>更新强>
由于XHR问题和API更改,下面的书签小册子被破坏了。
值得庆幸的是,Github现在有"A Whole New Code Search"可以胜任这项工作。
查看此伏都教:Github code search userscript。
按照那里的说明进行操作,或者如果您不喜欢浏览器膨胀 脚本和扩展,使用我的bookmarkcript标签包:
javascript:(function(){var s='https://github.com/skratchdot/github-code-search.user.js/raw/master/github-code-search.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('');
将上面的来源保存为新书签的网址。浏览任何 Github repo,点击书签, bam :页内,ajaxified代码 搜索
CAVEAT Github必须先对回购邮件编制索引才能进行搜索。
![]()
...胡言乱语
![]()
以下是来自带注释的ECMAScript 5.1规范的示例搜索 存储库:
![]()
答案 3 :(得分:10)
虽然@ VonC的答案适用于某些存储库,但遗憾的是,对于许多存储库而言,您现在无法做到这一点。 Github根本没有索引它们(最初由@emddudley评论)。他们没有在他们的网站上任何地方说明这一点,但他们会告诉你,如果你要求支持:
来自:Tim Pease
我们已经停止将新推送的代码添加到我们的codesearch索引中。代码量已超出我们当前的搜索索引,我们正在努力转向更具可扩展性的搜索体系结构。对不起,我很抱歉。我们没有估计这个新的搜索索引何时启动并运行,但是当它准备就绪时,将发布一篇博客文章(https://github.com/blog)。
令人讨厌的是,除了缺少结果(也可能来自错误的查询)之外,无法确定哪些存储库没有被编入索引。
除了等待他们博客(或者在这里观看SO)之外,还没有办法跟踪这个问题。
来自:Tim Pease
我担心我们的问题跟踪器是内部的,但我们可以在新搜索索引启动并运行后立即通知您。
答案 4 :(得分:2)
Google允许您搜索项目,但不能搜索代码:(
答案 5 :(得分:0)
我使用免费的Sourcegraph Chrome Extension在Github存储库中搜索源代码 ...但是我Downloaded Chrome First,我知道其他浏览器也支持它,例如-也许仅-Firefox。
我浏览了SourceForge's Chrome Extension Docs,然后通过阅读Github's Codebase Searching Doc
来了解我用Github的搜索引擎本身搜索目录名称所需要的内容。答案 6 :(得分:0)
octocat in:file
匹配文件中出现“ octocat”的代码 内容。
答案 7 :(得分:0)
转到此处:https://github.com/search并输入“ 模式回购:用户名 / 回购名”。
例如,要在用户 function revisionRequested(primaryControl) {
var formContext = primaryControl;
formContext.getAttribute("statuscode").setValue(100000009); // Revision Requested
removeOptions(0, primaryControl);
Xrm.Navigation.openAlertDialog('Your revision request has been been submitted');
}
function removeOptions(executionContext, primaryControl) {
var formContext = null;
executionContext == 0 ? formContext = primaryControl : formContext = executionContext.getFormContext();
var statusCode = formContext.getAttribute("statuscode").getText();
var statusControl = formContext.getControl("header_statuscode");
if (Xrm.Page.ui.getFormType() !== 1 && statusCode.includes('Revision')) {
statusControl.removeOption(1);
statusControl.removeOption(100000000);
statusControl.removeOption(100000001);
statusControl.removeOption(100000002);
statusControl.removeOption(100000003);
statusControl.removeOption(100000003);
statusControl.removeOption(100000004);
statusControl.removeOption(100000005);
statusControl.removeOption(100000006);
statusControl.removeOption(100000007);
statusControl.removeOption(100000008);
}
}
的{{1}}存储库中搜索cnn_learner
,请输入以下内容:
fastai
就是这样。唯一的烦恼是您将需要额外的点击。它会告诉您:
我们找不到与'cnn_learner相匹配的存储库 repo:fastai / fastai'
因为默认情况下它会搜索与该搜索字符串匹配的存储库 ...
因此,只需单击“代码”左侧的,它将显示您想要的内容。
或直接使用以下网址获取代码搜索结果:
https://github.com/search?q=cnn_learner+repo%3Afastai%2Ffastai&type=code
答案 8 :(得分:0)