注意
本文介绍了旧版代码搜索的语法,您只需要在使用 用于搜索代码的 REST API 端点 时才需要使用它。
有关您可以在 GitHub 上使用的代码搜索语法的更多信息,请参阅“了解 GitHub 代码搜索语法”。
您可以跨所有 GitHub 全局搜索,也可以将搜索范围限定到特定仓库或组织。有关更多信息,请参阅“关于在 GitHub 上搜索”。
您只能使用这些代码搜索限定符来搜索代码。在搜索代码时,特定于仓库、用户或提交的搜索限定符将不起作用。
提示
- 有关可以添加到任何搜索限定符以进一步改进结果的搜索语法的列表,请参阅“了解搜索语法”。
- 在多词搜索词语周围使用引号。例如,如果您想搜索标签为“进行中”的问题,则需要搜索
label:"in progress"
。搜索不区分大小写。
代码搜索注意事项
由于代码搜索的复杂性,对搜索执行方式有一些限制
- 您必须登录 GitHub 上的个人帐户才能跨所有公共仓库搜索代码。
- 只有当 Fork 的星数超过父仓库,并且 Fork 仓库在创建后至少有一个推送提交时,Fork 中的代码才可搜索。星数少于父仓库或没有提交的 Fork **不会**被编入代码搜索索引。若要在搜索结果中包含星数超过其父级且至少有一个推送提交的 Fork,您需要在查询中添加
fork:true
或fork:only
。有关更多信息,请参阅“在 Fork 中搜索”。 - 只有*默认分支*会被编入代码搜索索引。
- 只有小于 384 KB 的文件才可搜索。
- 最多可搜索 4,000 个私有仓库。这 4,000 个仓库将是您有权访问的前 10,000 个私有仓库中最近更新的仓库。
- 只有文件少于 500,000 个的仓库才可搜索。
- 只有在过去一年中有活动或已在搜索结果中返回的仓库才可搜索。
- 除了使用
filename
搜索外,在搜索源代码时,您必须始终包含至少一个搜索词语。例如,搜索language:javascript
无效,而amazing language:javascript
有效。 - 最多,搜索结果可以显示来自同一文件的两个片段,但该文件中可能还有更多结果。
- 您不能将以下通配符用作搜索查询的一部分:
. , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ] @
。搜索将简单地忽略这些符号。
按文件内容或文件路径搜索
使用 in
限定符,您可以将搜索范围限制到源代码文件的内容、文件路径或两者。省略此限定符时,只会搜索文件内容。
限定符 | 示例 |
---|---|
in:file | octocat in:file 匹配代码中文件内容中出现“octocat”的位置。 |
in:path | octocat in:path 匹配代码中文件路径中出现“octocat”的位置。 |
in:file,path | octocat in:file,path 匹配代码中文件内容或文件路径中出现“octocat”的位置。 |
在用户的或组织的仓库中搜索
要搜索特定用户或组织拥有的所有仓库中的代码,可以使用 user
或 org
限定符。要搜索特定仓库中的代码,可以使用 repo
限定符。
限定符 | 示例 |
---|---|
user:USERNAME | user:defunkt extension:rb 匹配来自 @defunkt 以 .rb 结尾的代码。 |
org:ORGNAME | org:github extension:js 匹配来自 GitHub 以 .js 结尾的代码。 |
repo:USERNAME/REPOSITORY | repo:mozilla/shumway extension:as 匹配来自 @mozilla 的 shumway 项目以 .as 结尾的代码。 |
按文件位置搜索
您可以使用 path
限定符搜索在仓库中特定位置出现的源代码。使用 path:/
搜索位于仓库根级别的文件。或者指定目录名称或目录路径以搜索位于该目录或其任何子目录中的文件。
限定符 | 示例 |
---|---|
path:/ | octocat filename:readme path:/ 匹配位于仓库根级别且包含“octocat”的 readme 文件。 |
path:DIRECTORY | form 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:LANGUAGE | element language:xml size:100 匹配包含单词“element”、标记为 XML 且大小正好为 100 字节的代码。 |
language:LANGUAGE | display language:scss 匹配包含单词“display”且标记为 SCSS 的代码。 |
language:LANGUAGE | org:mozilla language:markdown 匹配来自所有 @mozilla 存储库中标记为 Markdown 的代码。 |
按文件大小搜索
您可以使用size
限定符根据代码所在文件的大小搜索源代码。size
限定符使用大于、小于和范围限定符根据代码所在文件的大小(以字节为单位)筛选结果。
限定符 | 示例 |
---|---|
size:n | function size:>10000 language:python 匹配包含单词“function”、用 Python 编写的代码,且文件大小大于 10 KB。 |
按文件名搜索
filename
限定符匹配具有特定文件名的代码文件。您还可以使用文件查找器在存储库中查找文件。有关更多信息,请参阅“在 GitHub 上查找文件”。
限定符 | 示例 |
---|---|
filename:FILENAME | filename:linguist 匹配名为“linguist”的文件。 |
filename:FILENAME | filename:.vimrc commands 匹配包含单词“commands”的.vimrc 文件。 |
filename:FILENAME | filename:test_helper path:test language:ruby 匹配位于test 目录中的名为test_helper 的 Ruby 文件。 |
按文件扩展名搜索
extension
限定符匹配具有特定文件扩展名的代码文件。
限定符 | 示例 |
---|---|
extension:EXTENSION | form path:cgi-bin extension:pm 匹配包含单词“form”、位于cgi-bin 下且文件扩展名为.pm 的代码。 |
extension:EXTENSION | icon size:>200000 extension:css 匹配大小大于 200 KB、以 .css 结尾且包含单词“icon”的文件。 |
进一步阅读
- "排序搜索结果"
- "在分支中搜索"
- "在 GitHub 上浏览代码"