Skip to main content

搜索代码 (旧版)

You only need to use the legacy code search syntax if you are using the code search API.

注意

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

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

可以跨所有 GitHub 执行全局搜索,或将搜索范围限于特定存储库或组织。 有关详细信息,请参阅 关于在GitHub上的搜索

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

提示

  • 本文包含 GitHub.com 网站上示例搜索的链接,但你可以在任何 GitHub 平台中使用相同的搜索筛选器。 在链接的示例搜索中,将 github.com 替换为 GitHub 平台的主机名。
  • 有关可以添加到任何搜索限定符以进一步改善结果的搜索语法列表,请参阅 了解搜索语法
  • 对多个字词的搜索词使用引号。 例如,如果要搜索具有标签“In progress”的问题,可搜索 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:file
[
octocat in:file](https://github.com/search?q=octocat+in%3Afile&type=Code) 匹配“octocat”在文件内容中出现的代码。
in:path
[
octocat in:path](https://github.com/search?q=octocat+in%3Apath&type=Code) 匹配“octocat”在文件路径中出现的代码。
in:file,path
[
octocat in:file,path](https://github.com/search?q=octocat+in%3Afile%2Cpath&type=Code) 匹配“octocat”在文件内容或文件路径中出现的代码。

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

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

限定符示例
user:USERNAME
[
user:defunkt extension:rb](https://github.com/search?q=user%3Agithub+extension%3Arb&type=Code) 匹配 @defunkt 中以 .rb 结尾的代码。
org:ORGNAME
[
org:github extension:js](https://github.com/search?utf8=%E2%9C%93&q=org%3Agithub+extension%3Ajs&type=Code) 匹配 GitHub 上以 .js 结尾的代码。
repo:USERNAME/REPOSITORY
[
repo:mozilla/shumway extension:as](https://github.com/search?q=repo%3Amozilla%2Fshumway+extension%3Aas&type=Code) 匹配 @mozilla 的 shumway 项目中以 .as 结尾的代码。

按文件位置搜索

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

限定符示例
path:/
[
octocat filename:readme path:/](https://github.com/search?utf8=%E2%9C%93&q=octocat+filename%3Areadme+path%3A%2F&type=Code) 匹配在存储库根级别的包含“octocat”一词的 README 文件。
path:DIRECTORY
[
form path:cgi-bin language:perl](https://github.com/search?q=form+path%3Acgi-bin+language%3Aperl&type=Code) 匹配 cgi-bin 目录或其任何子目录中包含“form”一词的 Perl 文件。
path:PATH/TO/DIRECTORY
[
**
console path:app/public language:javascript
**
](https://github.com/search?q=console+path%3A%22app%2Fpublic%22+language%3Ajavascript&type=Code) 匹配 app/public 目录或其任何子目录(即使它们位于 app/public/js/form-validators)中的具有“console”一词的 JavaScript 文件。

按语言搜索

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

限定符示例
language:LANGUAGE
[
element language:xml size:100](https://github.com/search?q=element+language%3Axml+size%3A100&type=Code) 匹配标记为 XML 且刚好有 100 个字节的包含“element”一词的代码。
language:LANGUAGE
[
display language:scss](https://github.com/search?q=display+language%3Ascss&type=Code) 匹配包含“display”一词并标记为 SCSS 的代码。
language:LANGUAGE
[
org:mozilla language:markdown](https://github.com/search?utf8=%E2%9C%93&q=org%3Amozilla+language%3Amarkdown&type=Code) 匹配标记为 Markdown 的来自所有 @mozilla 存储库的代码。

按文件大小搜索

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

限定符示例
size:n
[
函数大小:>10000 language:python](https://github.com/search?q=function+size%3A%3E10000+language%3Apython&type=Code)匹配在大于 10 KB 的文件中查找包含“function”这个单词的Python代码。

按文件名搜索

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

限定符示例
filename:FILENAME
[
filename:linguist](https://github.com/search?utf8=%E2%9C%93&q=filename%3Alinguist&type=Code) 匹配名为“linguist”的文件。
filename:FILENAME
[
filename:.vimrc commands](https://github.com/search?q=filename%3A.vimrc+commands&type=Code) 匹配具有“commands”一词的 .vimrc 文件。
filename:FILENAME
[
filename:test_helper path:test language:ruby](https://github.com/search?q=minitest+filename%3Atest_helper+path%3Atest+language%3Aruby&type=Code) 匹配 test 目录中名为 test_helper 的 Ruby 文件 。

按文件扩展名搜索

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

限定符示例
extension:EXTENSION
[
form path:cgi-bin extension:pm](https://github.com/search?q=form+path%3Acgi-bin+extension%3Apm&type=Code) 匹配 cgi-bin 下包含单词“form”且扩展名为 .pm 的代码。
extension:EXTENSION
[
icon size:>200000 extension:css](https://github.com/search?utf8=%E2%9C%93&q=icon+size%3A%3E200000+extension%3Acss&type=Code) 匹配大于 200 KB 的以 .css 结尾的包含“icon”一词的文件。

其他阅读材料