解锁github高级搜索技能

作为程序员,github是必备网站,那么我们一般是怎么在github中中查找开源项目呢?今天我也来学习下常用的github高级搜索命令。

搜索仓库

按仓库名称、说明或自述文件内容搜索

通过 in 限定符,您可以将搜索限制为仓库名称name、仓库说明description、自述文件内容readme或这些的任意组合。如果省略此限定符,则只搜索仓库名称和说明。

限定符 示例
in:name sogrey in:name 匹配其名称中含有 “sogrey” 的仓库。
in:description sogrey in:name,description 匹配其名称或说明中含有 “sogrey” 的仓库。
in:readme sogrey in:readme 匹配其自述文件中提及 “sogrey” 的仓库。

也可以直接搜索指定仓库:

限定符 示例
repo:owner/name repo:sogrey/sogrey 匹配特定仓库名称。

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

要在特定用户或组织拥有的所有仓库中搜索,您可以使用 userorg 限定符。

限定符 示例
user:*USERNAME* user:defunkt forks:>100 匹配来自 @defunkt、拥有超过 100 复刻的仓库。
org:*ORGNAME* org:github 匹配来自 GitHub 的仓库。

按仓库大小搜索

size 限定符使用大于、小于和范围限定符查找匹配特定大小(以千字节 kb 为单位)的仓库。

限定符 示例
size:*n* size:1000 匹配恰好为 1 MB 的仓库。
size:>=30000 匹配至少为 30 MB 的仓库。
size:<50 匹配小于 50 KB 的仓库。
size:50..120 匹配介于 50 KB 与 120 KB 之间的仓库。

按关注者数量搜索

使用 followers 限定符以及大于、小于和范围限定符基于仓库拥有的关注者数量过滤仓库。

限定符 示例
followers:*n* node followers:>=10000 匹配有 10,000 或更多关注者提及文字 “node” 的仓库。
styleguide linter followers:1..10 匹配拥有 1 到 10 个关注者并且提及 “styleguide linter” 一词的的仓库。

按fork数量搜索

forks 限定符使用大于、小于和范围限定符指定仓库应具有的复刻数量。

限定符 示例
forks:*n* forks:5 匹配只有 5 个复刻的仓库。
forks:>=205 匹配具有至少 205 个复刻的仓库。
forks:<90 匹配具有少于 90 个复刻的仓库。
forks:10..20 匹配具有 10 到 20 个复刻的仓库。

按star数量搜索

使用大于、小于和范围限定符基于仓库具有的星标数量搜索仓库

限定符 示例
stars:*n* stars:500 匹配恰好具有 500 个星号的仓库。
stars:10..20 匹配具有 10 到 20 个星号、小于 1000 KB 的仓库。
stars:>=500 fork:true language:php 匹配具有至少 500 个星号,包括复刻的星号(以 PHP 编写)的仓库。

按仓库创建或上次更新时间搜索

您可以基于创建时间或上次更新时间过滤仓库。对于仓库创建,您可以使用 created 限定符;要了解仓库上次更新的时间,您要使用 pushed 限定符。pushed 限定符将返回仓库列表,按仓库中任意分支上最近进行的提交排序。

两者均采用日期作为参数。日期格式必须遵循 ISO8601标准,即 YYYY-MM-DD(年-月-日)。您也可以在日期后添加可选的时间信息 THH:MM:SS+00:00,以便按小时、分钟和秒进行搜索。这是 T,随后是 HH:MM:SS(时-分-秒)和 UTC 偏移 (+00:00)。

日期支持大于、小于和范围限定符。

限定符 示例
created:*YYYY-MM-DD* webos created:<2011-01-01 匹配具有 “webos” 字样、在 2011 年之前创建的仓库。
pushed:*YYYY-MM-DD* css pushed:>2013-02-01 匹配具有 “css” 字样、在 2013 年 1 月之后收到推送的仓库。
case pushed:>=2013-03-06 fork:only 匹配具有 “case” 字样、在 2013 年 3 月 6 日或之后收到推送并且作为复刻的仓库。

按语言搜索

基于其编写采用的主要语言搜索仓库。

限定符 示例
language:*LANGUAGE* rails language:javascript 匹配具有 “rails” 字样、以 JavaScript 编写的仓库。

按topic搜索

查找归类为特定主题的所有仓库。

限定符 示例
topic:*TOPIC* topic:jekyll匹配已归类为 “jekyll” 主题的仓库。

按topic数量搜索

使用 topics 限定符以及大于、小于和范围限定符按应用于仓库的主题数量搜索仓库。

限定符 示例
topics:*n* topics:5 匹配具有五个主题的仓库。
topics:>3 匹配超过三个主题的仓库。

按许可搜索

按其许可搜索仓库。您必须使用许可关键词按特定许可或许可系列过滤仓库。

限定符 示例
license:*LICENSE_KEYWORD* license:apache-2.0 匹配根据 Apache License 2.0 授权的仓库。

按公共或私有仓库搜索

基于仓库是公共还是私有来过滤搜索。

限定符 示例
is:public is:public org:github 匹配 GitHub 拥有的公共仓库。
is:private is:private pages 匹配您有访问权限且包含 “pages” 字样的私有仓库。

搜索代码

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

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

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

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

要在特定用户或组织拥有的所有仓库中搜索代码,您可以使用 userorg 限定符。要在特定仓库中搜索代码,您可以使用 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:*LANGUAGE* element language:xml size:100 匹配标记为 XML 且恰好有 100 个字节的并含有 “element” 字样的代码。
display language:scss 匹配标记为 SCSS 且含有 “display” 字样的代码。
org:mozilla language:markdown 匹配标记为 Markdown 且来自所有 @mozilla 仓库的代码。

按文件大小搜索

可以使用 size 限定符基于代码所在文件的大小搜索源代码。size 限定符使用大于、小于和范围限定符基于在其中找到代码的文件的字节大小来过滤结果。

限定符 示例
size:*n* function size:>10000 language:python 匹配含有 “function” 字样、以 Python 编写、位于大于 10 KB 的文件中的代码。

按文件名搜索

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

限定符 示例
filename:*FILENAME* filename:linguist 匹配名为 “linguist” 的文件。
filename:.vimrc commands 匹配含有 “commands” 字样的 .vimrc 文件。
filename:test_helper path:test language:ruby 匹配 test 目录内名为 test_helper 的 Ruby 文件。

按文件扩展名搜索

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

限定符 示例
extension:*EXTENSION* form path:cgi-bin extension:pm 匹配含有 “form” 字样、位于 cgi-bin 下且具有 .pm 文件扩展名的代码。
icon size:>200000 extension:css 匹配大于 200 KB、以 .css 结尾且含有 “icon” 字样的文件。

github官方高级搜索页面

github官方地址:https://github.com/search/advanced

文章目录
  1. 搜索仓库
    1. 按仓库名称、说明或自述文件内容搜索
    2. 在用户或组织的仓库内搜索
    3. 按仓库大小搜索
    4. 按关注者数量搜索
    5. 按fork数量搜索
    6. 按star数量搜索
    7. 按仓库创建或上次更新时间搜索
    8. 按语言搜索
    9. 按topic搜索
    10. 按topic数量搜索
    11. 按许可搜索
    12. 按公共或私有仓库搜索
  2. 搜索代码
    1. 按文件内容或文件路径搜索
    2. 在用户或组织的仓库内搜索
    3. 按文件位置搜索
    4. 按语言搜索
    5. 按文件大小搜索
    6. 按文件名搜索
    7. 按文件扩展名搜索
  3. github官方高级搜索页面
本站总访问量 | 本文总阅读量