1 前言

在互联网上寻找某件事情需要有正确的搜索技巧,在 GitHub 也不例外,通过一些搜索的语法和策略,可以帮助更精准、快速地定位到有价值的项目和代码片段。

在使用搜索前需要了解一个存储库大概包含哪些内容,可以在存储库详情页面查看,具体可参考下图。

image-20240702024947554

2 基础搜索语法

2.1 关键词搜索

最直接的方式,只需在搜索框中输入关键词,如:data visualization

image-20240702001751465

2.2 引号精确匹配

如果想要精确搜索某个短语,可以将其用引号括起来,如:"data visualization"

image-20240702002338077

3 高级搜索语法

3.1 按基本信息

语法描述
xxx in:name匹配名称中带有 xxx 的存储库
xxx in:description匹配说明中带有 xxx 的存储库
xxx in:topics匹配标签中带有 xxx 的存储库
xxx in:readme匹配自述文件中带有 xxx 的存储库
  • 示例1:匹配名称中带有 hexo 的存储库
1
hexo in:name

image-20240702025307675

  • 示例2:匹配标签中带有 hexo 的存储库
1
hexo in:topics

image-20240702025551676

3.2 按星数、分支数

语法描述
stars:m…n匹配 m 到 n 个星数的存储库
stars:>n匹配大于 n 个星数的存储库
>为判断,还可替换为>=<<=
forks:m…n匹配 m 到 n 个分支数的存储库
forks:<=n匹配小于等于 n 个分支数的存储库
<=为判断,还可替换为>>=<
  • 示例1:匹配小于等于 656 个星数的存储库(以 hexo 为例)
1
hexo stars:<=656

image-20240702031319498

  • 示例2:匹配大于 3k 分支数的存储库(以 hexo 为例)
1
hexo forks:>3000

image-20240702131951013

3.3 按语言

语法描述
language:LANGUAGE匹配编程语言为 LANGUAGE 的存储库
  • 示例:匹配语言为 TypeScript 的存储库(以 hexo 为例)
1
hexo language:TypeScript

image-20240702132715661

3.4 按创建时间、更新时间

语法描述
created:<YYYY-MM-DD匹配 YYYY 年 MM 月 DD 日之前创建的存储库
pushed:>YYYY-MM-DD匹配 YYYY 年 MM 月 DD 日之后更新的存储库
  • 示例:匹配 2024 年 2 月之后更新的存储库(以 hexo 为例)
1
hexo pushed:>=2024-03-01

image-20240702133521937

3.5 按用户、组织

语法描述
user:USERNAME匹配用户为 USERNAME 的存储库
org:ORGNAME匹配组织为 ORGNAME 的存储库
  • 示例:匹配用户为 hexojs 的存储库(以 hexo 为例)
1
hexo user:hexojs

image-20240702134656735

3.6 按许可证

语法描述
license:LICENSE匹配许可证为 LICENSE 的存储库
常用许可关键词有:MITApache-2.0GPL
  • 示例:匹配许可证为 Apache-2.0 的存储库(以 hexo 为例)
1
hexo license:Apache-2.0

image-20240702140718485

4 组合搜索技巧

结合前面的基础、高级搜索语法,可以实现更复杂、更精确的搜索。

  • 示例1:搜索 2024 年之后更新、星数大于 1k 的 hexo 存储库
1
hexo pushed:>=2024-01-01 stars:>1000

image-20240702141816163

  • 示例2:搜索 MIT 许可证、组织为 GitHub 、语言使用 JavaScript 的所有存储库
1
license:MIT org:github language:JavaScript

image-20240702141755227

5 利用高级搜索界面

GitHub 提供了一个高级搜索界面,通过它可以更直观地设置各种搜索条件,包括高级选项、存储库选项、代码选项、问题选项、用户选项等。

GitHub 高级搜索

6 写在最后

熟练掌握 GitHub 的搜索语法和技巧,能够大大提高在开源世界中的探索效率,更快地找到所需的代码资源,加速开发进程。在 GitHub 中诸如此类的效率方法还有很多,如果感兴趣可以查阅官方文档学习。