注意:本文介绍了旧版代码搜索的语法,您只需要在使用 搜索代码的 REST API 端点 时使用。
有关您可以在 GitHub.com 上使用的代码搜索语法的更多信息,请参阅“了解 GitHub 代码搜索语法”。
您可以全局搜索整个 GitHub,也可以将搜索范围缩小到特定仓库或组织。有关更多信息,请参阅“关于在 GitHub 上搜索”。
您只能使用这些代码搜索限定符搜索代码。用于仓库、用户或提交的特定搜索限定符在搜索代码时将不起作用。
提示
- 有关可以添加到任何搜索限定符以进一步改进搜索结果的搜索语法列表,请参阅“了解搜索语法”。
- 在多词搜索词语周围使用引号。例如,如果您要搜索带有“进行中”标签的问题,则应搜索
label:"in progress"
。搜索不区分大小写。
代码搜索注意事项
由于搜索代码的复杂性,对搜索的执行方式有一些限制
- 您必须登录 GitHub 个人帐户才能搜索所有公共存储库中的代码。
- 在 分支 中的代码只有在分支的星数超过父存储库,并且分支存储库在创建后至少有一个推送提交的情况下才能被搜索。星数少于父存储库或没有提交的分支 **不会** 被索引用于代码搜索。要将星数超过其父存储库且至少有一个推送提交的分支包含在搜索结果中,您需要在查询中添加
fork:true
或fork:only
。有关更多信息,请参阅 "在分支中搜索。"。 - 只有 *默认分支* 被索引用于代码搜索。
- 只有小于 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 匹配在 cgi-bin 目录下,包含单词 "form" 且文件扩展名为 .pm 的代码。 |
extension:EXTENSION | icon size:>200000 extension:css 匹配大小超过 200 KB,以 .css 结尾,并且包含单词 "icon" 的文件。 |
进一步阅读
- "排序搜索结果"
- "在分支中搜索"
- "在 GitHub 上浏览代码"