Skip to main content

搜索代码 (旧)

如果你使用的是代码搜索 API,则只需使用旧的代码搜索语法。

Note

本文介绍了旧的代码搜索语法,你只需将其用于搜索代码的 REST API 终结点

有关可在 GitHub 上使用的代码搜索语法的信息,请参阅 了解 GitHub 代码搜索语法

您可以全局搜索所有 GitHub,也可搜索特定仓库或组织。有关详细信息,请参阅 关于在 GitHub 上搜索

您只能使用这些代码搜索限定符搜索代码。 搜索代码时,专用于仓库、用户或提交的搜索限定符将不起作用。

Tip

  • 有关可以添加到任何搜索限定符以进一步改善结果的搜索语法列表,请参阅“了解搜索语法”。
  • 对多个字词的搜索词使用引号。 例如,如果要搜索具有标签“In progress”的问题,可搜索 label:"in progress"。 搜索不区分大小写。

由于搜索代码的复杂性,执行搜索的方式有一些限制:

  • 你必须登录到 GitHub 上的个人帐户才能在所有公共存储库中搜索代码。
  • 仅当分叉的星多于父级存储库,且分支存储库在创建后至少有一个推送提交时,分叉中的代码才可搜索。 如果分叉的星少于父级存储库,或者无提交,则分叉没有针对代码搜索编制索引。 若要在搜索结果中包含星数多于其父级的分叉,或者有至少一个推送提交,必须将 fork:truefork:only 添加到查询中。 有关详细信息,请参阅“在复刻中搜索”。
  • 仅默认分支针对代码搜索编制了索引。
  • 只有小于 384 KB 的文件可搜索。
  • 可搜索多达 4000 个专用 存储库。 这 4000 个存储库将是你有权访问的前 10000 个专用 存储库中最近更新的存储库。
  • 只有文件少于 500,000 个的存储库可搜索。
  • 只能搜索去年有活动或已在搜索结果中返回的仓库。
  • filename 搜索外,在搜索源代码时,必须始终至少包含一个搜索词。 例如,搜索 language:javascript 是无效的,而搜索 amazing language:javascript 是有效的。
  • 搜索结果最多可显示同一文件的两个分段,但文件内可能有更多结果。
  • 无法使用以下通配符作为搜索查询的一部分:. , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ] @。 搜索只会忽略这些符号。

按文件内容或文件路径搜索

通过使用 in 限定符,可以将搜索限制为源代码文件的内容和/或文件路径。 如果省略此限定符,则只搜索文件内容。

限定符示例
in:fileoctocat in:file 匹配“octocat”在文件内容中出现的代码。
in:pathoctocat in:path 匹配“octocat”在文件路径中出现的代码。
in:file,pathoctocat in:file,path 匹配“octocat”在文件内容或文件路径中出现的代码。

在用户或组织的仓库内搜索

要在特定用户或组织拥有的所有仓库中搜索代码,可使用 userorg 限定符。 要在特定存储库中搜索代码,可使用 repo 限定符。

限定符示例
user:USERNAMEuser:defunkt extension:rb 匹配 @defunkt 中以 .rb 结尾的代码。
org:ORGNAMEorg:github extension:js 匹配 GitHub 中以 .js 结尾的代码。
repo:USERNAME/REPOSITORYrepo:mozilla/shumway extension:as 匹配 @mozilla 的 shumway 项目中以 .as 结尾的代码。

按文件位置搜索

可使用 path 限定符搜索存储库中特定位置显示的源代码。 使用 path:/ 可搜索位于存储库根目录级别的文件。 或者,指定目录名称或目录路径以搜索位于该命令或其任何子目录中的文件。

限定符示例
path:/octocat filename:readme path:/ 匹配位于存储库的根级别的包含“octocat”一词的自述文件。
path:DIRECTORYform path:cgi-bin language:perl 匹配 cgi-bin 目录或其任何子目录中包含“form”一词的 Perl 文件。
path:PATH/TO/DIRECTORY console path:app/public language:javascript 匹配 app/public 目录或其任何子目录(即使它们位于 app/public/js/form-validators)中的具有“console”一词的 JavaScript 文件。

按语言搜索

您可以基于所编写的语言搜索代码。 language 限定符可以是语言名称或别名。 有关支持的语言及其名称和别名的完整列表,请参阅 github-linguist/linguist 存储库

限定符示例
language:LANGUAGEelement language:xml size:100 匹配标记为 XML 且刚好有 100 个字节的包含“element”一词的代码。
language:LANGUAGEdisplay language:scss 匹配标记为 SCSS 的具有单词“display”的代码。
language:LANGUAGEorg:mozilla language:markdown 匹配标记为 Markdown 的来自所有 @mozilla 存储库的代码。

按文件大小搜索

可以使用 size 限定符基于代码所在文件的大小搜索源代码。 size 限定符使用大于、小于和范围限定符根据找到代码的文件的字节大小筛选结果。

限定符示例
size:nfunction size:>10000 language:python 匹配采用 Python 编写的位于大于 10 KB 的文件中的包含“function”一词的代码。

按文件名搜索

filename 限定符匹配具有特定文件名的代码文件。 您还可以使用文件查找器在仓库中查找文件。 有关详细信息,请参阅“在 GitHub 上查找文件”。

限定符示例
filename:FILENAMEfilename:linguist 匹配名为“linguist”的文件。
filename:FILENAMEfilename:.vimrc commands 匹配具有“commands”一词的 .vimrc 文件。
filename:FILENAMEfilename:test_helper path:test language:ruby 匹配 test 目录中名为 test_helper 的 Ruby 文件 。

按文件扩展名搜索

extension 限定符匹配具有特定文件扩展名的代码文件。

限定符示例
extension:EXTENSIONform path:cgi-bin extension:pm 匹配 cgi-bin 下具有 .pm 文件扩展名的包含“form”一词的代码
extension:EXTENSIONicon size:>200000 extension:css 匹配大于 200 KB 的以 .css 结尾的包含“icon”一词的文件。

其他阅读材料