在Github项目中搜索代码

时间:2010-09-01 08:29:54

标签: git search github

有没有办法在Github项目的代码中使用grep?

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

想法?

9 个答案:

答案 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

相同的名称

enter image description here

会给:

enter image description here

您还有许多其他搜索示例,基于on followerson 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和用户,但我想要搜索的内容:代码!

GitHub more permissive search results


前一期的初步答复和说明(2012年9月=&gt; 2012年3月)

您可以使用advanced search GitHub form

  • 从下拉列表中选择CodeRepositoriesUsers
  • 使用为该搜索类型列出的相应前缀

例如,使用 repo:username/repo-name 指令将搜索范围限制为代码存储库。
最初的“Advanced Search”页面包含以下部分:

  

代码 搜索:

     

代码搜索将查看GitHub上公开托管的所有代码。您也可以按:

过滤      
      
  • 语言 language:
  •   
  • 存储库名称(包括用户名) repo:
  •   
  • 文件路径 path:
  •   

因此,如果您选择“Code”搜索选择器,那么您在greo中搜索文本的查询将会起作用:

Good Search selector


来自GitHub的令人难以置信的 无用是:

  • 如果您忘记放置正确的搜索选择器(此处为“Code”),您将收到一条错误消息:
    Invalid search query. Try quoting it.

Wrong selector for the code filer

  • 错误消息对您没有任何帮助 没有多少“quoting it”可以帮助您摆脱此错误。

  • 一旦收到该错误消息,您就不会看到这些部分提醒您搜索选择器(“Repositories”,“{{1}之间的正确关联}“或”Users“)和(右)搜索过滤器(此处为”Language“)。
    您所做的任何进一步尝试都不会显示这些关联(选择器 - 过滤器)。只有您在上面看到的错误消息...
    获取这些数组的唯一方法是单击“repo:”图标:

Advance Search Icon on GitHub

  • Advance Search”搜索选择器(默认情况下)实际上是所有搜索过滤器的错误! “Everything”除外 (您可以想象/假设“language:”可以帮助您选择实际使用搜索过滤器“Everything”的任何搜索选择器,但是没有。这太简单了。

    < / LI>
  • 您无法单独通过“repo:”字段指定所需的搜索选择器! (但您可以使用“Advance Search”,即使“language:”是“Search Language”'类型'正下方的另一个组合框...)

Wrong search selector


因此,用户的体验通常如下:

  • 点击“Search for”,浏览过滤器的这些部分,并注意您要使用的部分:“Advanced Search
  • 您进行了第一次高级搜索“repo:”,但使用默认搜索选择器“repo:jruby/jruby stat” =&GT; Everything! (显示关联“选择器 - 过滤器”的数组消失
  • 您注意到“搜索”选择器,选择第一个选项“FAIL”(“Dah!我想在存储库中搜索...”)
    =&GT; Repositories <!/ LI>
  • 沮丧,你选择了下一个选择器(这里,“FAIL”),甚至没有看到所述选择器,只是为了再试一次...
    =&GT; Users <!/ LI>
  • “搞砸了,GitHub搜索破碎!我离开了这里!”
    ...
    (GitHub高级搜索实际上没有被破坏。只有他们的GUI是......)

所以,回顾一下,如果你想“在Github项目代码中找到某些东西”,作为OP Ben Humphreys,请不要忘记选择“FAIL”搜索选择器。

答案 1 :(得分:22)

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

enter image description here

令人费解的是,看起来公共存储库无法使用此功能。

答案 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必须先对回购邮件编制索引才能进行搜索。

     

Before the Bookmarklet

     

...胡言乱语

     

After - Look in the second menubar after the leftmost tabs: Files, Commits, Branches...

     

以下是来自带注释的ECMAScript 5.1规范的示例搜索   存储库:

     

Sample search in the annotated ECMAScript 5.1 specification repository

答案 3 :(得分:10)

虽然@ VonC的答案适用于某些存储库,但遗憾的是,对于许多存储库而言,您现在无法做到这一点。 Github根本没有索引它们(最初由@emddudley评论)。他们没有在他们的网站上任何地方说明这一点,但他们会告诉你,如果你要求支持:

  

来自:Tim Pease
  我们已经停止将新推送的代码添加到我们的codesearch索引中。代码量已超出我们当前的搜索索引,我们正在努力转向更具可扩展性的搜索体系结构。对不起,我很抱歉。我们没有估计这个新的搜索索引何时启动并运行,但是当它准备就绪时,将发布一篇博客文章(https://github.com/blog)。

令人讨厌的是,除了缺少结果(也可能来自错误的查询)之外,无法确定哪些存储库没有被编入索引。

除了等待他们博客(或者在这里观看SO)之外,还没有办法跟踪这个问题。

  

来自:Tim Pease
  我担心我们的问题跟踪器是内部的,但我们可以在新搜索索引启动并运行后立即通知您。

答案 4 :(得分:2)

Google允许您搜索项目,但不能搜索代码:(

site:https://github.com/CreateJS/EaselJS test

答案 5 :(得分:0)

我使用免费的Sourcegraph Chrome Extension在Github存储库中搜索源代码 ...但是我Downloaded Chrome First,我知道其他浏览器也支持它,例如-也许仅-Firefox。

我浏览了SourceForge's Chrome Extension Docs,然后通过阅读Github's Codebase Searching Doc

来了解我用Github的搜索引擎本身搜索目录名称所需要的内容。

答案 6 :(得分:0)

GitHub documentation说-

  

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)

要在存储库中进行搜索,请在存储库的根目录中添加URL参数/search?q=search_terms,例如:

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

enter image description here

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