跳至主要内容

搜索代码(旧版)

只有在使用代码搜索 API 时才需要使用旧版代码搜索语法。

注意

本文介绍了旧版代码搜索的语法,只有在使用用于搜索代码的 REST API 端点时才需要使用它。

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

您可以在整个 GitHub 上进行全局搜索,或将搜索范围限定为特定的仓库或组织。欲了解更多信息,请参阅GitHub 搜索概述

只能使用这些代码搜索限定符来搜索代码。专用于仓库、用户或提交的搜索限定符在代码搜索时无效。

提示

  • 本文包含指向 GitHub.com 网站上示例搜索的链接,但您也可以在任何 GitHub 平台上使用相同的搜索过滤器。在示例搜索的链接中,请将 github.com 替换为您所在 GitHub 平台的主机名。
  • 若想查看可添加到任意搜索限定符以进一步优化结果的搜索语法列表,请参阅 了解搜索语法
  • 对多词搜索词使用引号。例如,要搜索标记为 “In progress” 的 issue,您应搜索 label:"in progress"。搜索不区分大小写。

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

  • 您必须登录 GitHub 个人账号才能在所有公共仓库中搜索代码。
  • 只有在分叉仓库拥有比原仓库更多的星标且在创建后至少有一次提交推送的情况下,分叉仓库中的代码才能被搜索。星标少于原仓库或没有任何提交的分叉 被编入代码搜索索引。若要在搜索结果中包含星标多于原仓库且至少有一次提交推送的分叉,需要在查询中添加 fork:truefork:only。更多信息请参阅在分叉中搜索
  • 仅对默认分支进行代码搜索索引。
  • 仅可搜索小于 384 KB 的文件。
  • 最多可搜索 4,000 个私有仓库。这 4,000 个仓库是您可访问的前 10,000 个私有仓库中最近更新的。
  • 仅可搜索文件数少于 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:/ 匹配位于仓库根目录、文件名为 readme 且包含 “octocat” 的文件。
path:DIRECTORYform path:cgi-bin language:perl 匹配 cgi-bin 目录或其任何子目录中包含 “form” 的 Perl 文件。
path:PATH/TO/DIRECTORYconsole path:app/public language:javascript 匹配 app/public 目录或其任意子目录(即使位于 app/public/js/form-validators)中包含 “console” 的 JavaScript 文件。

按语言搜索

您可以按代码使用的语言进行搜索。language 限定符可使用语言名称或别名。完整的受支持语言名称及别名列表,请查看github-linguist/linguist 仓库

限定符示例
language:LANGUAGEelement language:xml size:100 匹配包含 “element” 且标记为 XML、大小正好为 100 字节的代码。
language:LANGUAGEdisplay language:scss 匹配包含 “display” 且标记为 SCSS 的代码。
language:LANGUAGEorg:mozilla language:markdown 匹配所有 @mozilla 仓库中标记为 Markdown 的代码。

按文件大小搜索

可以使用 size 限定符根据代码所在文件的大小进行搜索。size 限定符支持大于、小于和范围限定符,以字节大小过滤结果。

限定符示例
size:nfunction size:>10000 language:python 匹配包含 “function” 且使用 Python 编写、文件大小大于 10 KB 的代码。

按文件名搜索

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” 的文件。

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.