GitHub项目精准搜索技巧

570 阅读5分钟

Github搜索技巧

引言

Github对于程序员来说好似是一片宝库,里面有着前人上传的各式各样的代码和优秀的开源项目,但只是通过简单的关键字搜索是很难精准匹配到自己想要寻找的内容的。

本篇文章便是告诉大家一些关于Github的搜索技巧,通过这些技巧可以让自己更容易找到需要的项目或代码,下面正文开始。

普通的关键字搜索

在Github中通过直接在搜索框中输入要查找的关键字的方式进行搜索,默认的检索范围是从仓库名称和详情这两部分中进行项目的查找。

若查询的关键字中存在空格,默认情况下会将被空格隔开的内容分别进行匹配,只要项目包含其中任意一部分便会被视为满足结果的项目。

如搜索关键字为:Java Spring,则搜索结果中会包含Java项目和Spring项目。

若想将其视为统一的整体,则使用双引号将关键字包裹起来,就会被视为一个整体去搜索。

如搜索关键字为:"Java Spring",则搜索结果中就只会返回同时满足这两者的结果。

项目属性

在开始搜索技巧的说明之前,让我们先来简单认识一下在Github中的项目有哪些可以作为搜索参数的属性吧,这样在之后说明具体的技巧时,能够知道所对应的是项目的那一部分。

详情展示.png

有部分不易在图中表名,大致可供搜索的属性描述如下:

  • 项目名称
  • 项目详情/说明
  • Readme文档
  • Languages
  • Stars(收藏数)
  • Forks(克隆数)
  • Topic(主题)
  • created(创建日期)
  • pushed(更新日期)
  • owner(拥有者)

常用的可用于搜索的属性有上述几个。

其中项目名称、项目详情/说明、Readme文档和Languages几个属性则分别描述了项目的基础信息、使用文档以及主要使用的什么编程语言。

Stars 和 Forks 表示了一个项目受欢迎的趋势,一般这两个数量越多就代表这个项目越优秀。

created 和 pushed 分别表示了项目的创建时间和最后一次推送的时间,若是对于项目的时效性有要求,想找到最近还在持续更新的项目可以通过设置这两个属性来实现。

owner 表示项目的拥有者是谁,通常用于想找具体的某个作者的项目的时候添加此属性。

上述的几个参数可以自己手动使用关键字指定,也可以通过Github自己的搜索条件来直接添加。

搜索偏向.png

介绍完Github中项目的可供搜索的属性了,就是如何通过这些属性来查找自己所需的项目,下面提供了一些示例和相关操作的原理解析。

指定具体部分进行搜索

在搜索时可通过关键字指定从项目的哪一部分中搜索结果,如可指定从项目名称、详情或Readme文档中进行搜索,关键字为:

  • in:name,按照仓库名称来进行搜索
  • in:description,按照仓库详情来进行搜索
  • in:readme,按照Readme文档来进行搜索

具体示例如下:

in:name java
in:description java
in:readme java
排除特定结果

通过 NOT 关键字可以排除特定的搜索结果,此关键字可以和上述的指定部分搜索的关键字 in组合使用,从而更加精准的排除掉特定的结果,也可通过 - 来简化写法。

使用示例如下:

# 在项目名称中含有Java,但在项目详情中不能含有Algorithms,两种写法效果一样
in:name java NOT in:description Algorithms 
in:name java -in:description Algorithms 

指定搜索位置的关键字和排除特定结果的关键字可以任意组合使用,能够让用户更加精准的控制住想要搜索的结果。

指定编程语言和主题

通过指定编程语言能够得到自己相近的技术栈,主题也是项目与之相关的内容,类似于标签的感觉,language 关键字用于指定项目所主要使用的编程语言,topic 则用来指定具体的主题。

# 在项目名称和详情中搜索含有project关键字且语言为Java,同时包含主题为Spring的项目
project language:Java topic:spring
指定Stars和Forks数量搜索

通过指定Stars和Forks的数量可以让你快速搜索出受人欢迎的项目,这类项目的稳定性和可靠性通常也会更有保障。

通过 > <n..n来进行查询,n..n用于表示范围,如1..100即表示1到100这个范围区间的结果

# 用于查询stars数在0-100之间同时forks数在50-100之间的项目
project  stars:0..100  forks:50..100 
# 查询stars数大于100同时forks数大于50的项目
project  stars:>100  forks:>50 
指定日期搜索

若是想要查找近期依旧有更新的项目,可以通过限定 pushed 更新时间的方式来实现,至于创建时间 created 应用较少,且限定方式和更新时间相同,就不再重复描述了

# 更新时间大于2025-03-01的项目才会被搜索到
project pushed:>2025-03-01
总结

最后总结一下常用的关键字集合和范围查询条件的使用

要查询的部分关键字
按照项目(仓库名称)搜索in:name xxx
按照项目(仓库)详情搜索in:description xxx
按照README文件描述搜索in:readme xxx
按照编程语言搜索language:xxx
按照star数限制搜索stars:>n
按照fork数限制搜索forks:>n
按照更新时间限制(时间晚于)搜索pushed:>YYYY-MM-DD
按照某个人的某个项目限制搜索owner:xxx

范围查询的符合,可用于Stars、Forks和日期的范围查询。

范围查询的符号描述
>n大于
>=n大于等于
<n小于
<=n小于等于
n..n在指定范围中