写在前面
在每一个程序员眼中,GitHub作为全球最大同性交友网站,它上面的各类优质开源框架以及教程,无论在数量还是质量上,是当之无愧的世界第一,因此,如何高效的在GitHub上进行搜索就成为了每一位程序员必会的技能之一。
但是,很多童鞋虽然注册了GitHub,却只是作为一个提交代码的平台,不知道怎么利用它获取资源,让自己开眼看世界,这就有点失去GitHub作为世界第一开源平台的实际功能意义
所以,如何充分且最大限度的利用这个平台,找到自己喜欢或是感兴趣的开源项目呢?这就需要你了解如何使用 GitHub 上提供的搜索功能来查找不同类型的信息,如项目、人员和代码。
💥普通搜索——输入关键词
初识搜索,先学学怎么使用普通搜索
首先,登陆GitHub后,找到顶部的搜索栏,输入你想要搜索的关键词,点击AllGithub
恭喜你已经实现学会搜索的第一步!但是,若你仅仅只是这样输入关键词就搜索那么你得到的结果可能是成千上万条的,如以上搜索python,显示的搜索结果有250w个相关结果,显然,这时候你如果想在这其中找到你想要的或是感兴趣的开源项目简直就是大海捞针嘛。
再加上GitHub服务器在国外,国内搜索不仅龟速还时不时卡顿。于是,我们得添加一些过滤条件,也就是限制词来限制搜索范围,过滤GitHub的搜索结果,提高精度,更精确的搜索项目
💥高级搜索——添加限定词
要想在短时间内检索到自己想要的仓库,我们可以在搜索时加上一些限制条件,比如,仓库名(repository name)、项目描述(description)、内容(contents)、说明文件(readme.md) 来搜索项目,下面是常用的一些筛选条件。
搜索过滤的要素搜索栏中的书写按照项目(仓库名称)搜索in:name XXX按照编程语言搜索language:xxx按照项目(仓库)描述搜索in:description xxx按照README文件描述搜索in:readme xxx按照star数限制搜索stars:>n按照fork数限制搜索forks:>n按照更新时间限制(时间晚于)搜索pushed:>YYYY-MM-DD按照某个人的某个项目限制搜索repo:owner/name搜索用户名下的所有项目(仓库)或某个项目(仓库)——用户名后加项目名称org:username搜索某个组织名下的项目(仓库)org:orgname按照关注者数量搜索node followers:>=10000 匹配有 10,000 或更多关注者提及文字 "node" 的仓库
1. 通过限定<关键词>👈
我们想要搜索项目描述中包含vue的项目,我们可以在搜索框输入:vue in:description或是 in:description vue
⚓ 注:其他搜索
①尝试查询仓库名中有python的项目in:name python或是python in:name
②尝试查询sunyctf用户名下的项目user:sunyctf
③尝试查询github名下的项目org:github
④尝试查询sunyctf下的valentine项目repo:sunyctf/valentine
2. 通过限定<编程语言>👈
比如,想要搜索用python编写的爬虫项目,我们可以输入:爬虫 in:readme language:python
3. 通过限定<star数量> 与 <fork 数量>👈
stars: >n n代表stars数 forks: >n n代表fork数
star 数量和 fork 数量可以彰显出此项目在github上的受欢迎度,我们可以用 stars:>n和 forks:>n筛选出 star 数和 fork 数超过一定数值的项目。
比如,想要搜索爬虫项目 star 数都超过 5000,我们可以输入:小程序 in:readme stars:>5000
4. 通过限定<更新时间>👈
一般的,我们希望自己搜索到的项目是时常在更新在维护的,而更新的时间则可以反映出搜索项目的更新维护状态。pushed:可以帮助我们按照项目更新时间筛选出需要的仓库。
比如,我们希望搜到的仓库是在2020-06-30之后更新过的且stars数大于5000的用python编写的爬虫项目,我们可以输入:爬虫 in:readme stars:>5000 language:python pushed:>2020-06-30
⚓ Tips:
有关可以添加到任何搜索限定符以进一步改善结果的搜索语法列表,请参阅“了解搜索语法”。
对多个字词的搜索词使用引号。 例如,如果要搜索具有标签 "In progress" 的议题,可搜索
label:"in progress"
。 搜索不区分大小写
🔗番外:附GitHub官方文档提供的搜索语法
查询大于或小于另一个值的值
您可以使用
>
、
>=
、
<
和
<=
搜索大于、大于等于、小于以及小于等于另一个值的值。
查询示例
>*n*
cats stars:>1000 匹配含有 "cats" 字样、星标超过 1000 个的仓库。
>=*n*
cats topics:>=5 匹配含有 "cats" 字样、有 5 个或更多主题的仓库。
<*n*
cats size:<10000 匹配小于 10 KB 的文件中含有 "cats" 字样的代码。
<=*n*
cats stars:<=50 匹配含有 "cats" 字样、星标不超过 50 个的仓库。
您还可以使用范围查询搜索大于等于或小于等于另一个值的值。
查询示例
*n*..*
cats stars:10..* 等同于
stars:>=10
并匹配含有 "cats" 字样、有 10 个或更多星号的仓库。
*..*n*
cats stars:*..10 等同于
stars:<=10
并匹配含有 "cats" 字样、有不超过 10 个星号的仓库。
查询范围之间的值
您可以使用范围语法
*n*..*n*
搜索范围内的值,其中第一个数字 n 是最低值,而第二个是最高值。
查询示例
*n*..*n*
cats stars:10..50 匹配含有 "cats" 字样、有 10 到 50 个星号的仓库。
查询日期
您可以通过使用
>
、
>=
、
<
、
<=
和范围查询搜索早于或晚于另一个日期,或者位于日期范围内的日期。 日期格式必须遵循 ISO8601标准,即
YYYY-MM-DD
(年-月-日)。
查询示例
>*YYYY*-*MM*-*DD*
cats created:>2016-04-29 匹配含有 "cats" 字样、在 2016 年 4 月 29 日之后创建的议题。
>=*YYYY*-*MM*-*DD*
cats created:>=2017-04-01 匹配含有 "cats" 字样、在 2017 年 4 月 1 日或之后创建的议题。
<*YYYY*-*MM*-*DD*
cats pushed:<2012-07-05 匹配在 2012 年 7 月 5 日之前推送的仓库中含有 "cats" 字样的代码。
<=*YYYY*-*MM*-*DD*
cats created:<=2012-07-04 匹配含有 "cats" 字样、在 2012 年 7 月 4 日或之前创建的议题。
*YYYY*-*MM*-*DD*..*YYYY*-*MM*-*DD*
cats pushed:2016-04-30..2016-07-04 匹配含有 "cats" 字样、在 2016 年 4 月末到 7 月之间推送的仓库。
*YYYY*-*MM*-*DD*..*
cats created:2012-04-30..* 匹配在 2012 年 4 月 30 日之后创建、含有 "cats" 字样的议题。
*..*YYYY*-*MM*-*DD*
cats created:*..2012-07-04 匹配在 2012 年 7 月 4 日之前创建、含有 "cats" 字样的议题。
您也可以在日期后添加可选的时间信息
THH:MM:SS+00:00
,以便按小时、分钟和秒进行搜索。 这是
T
,随后是
HH:MM:SS
(时-分-秒)和 UTC 偏移 (
+00:00
)。
查询示例
*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*+*00*:*00*
cats created:2017-01-01T01:00:00+07:00..2017-03-01T15:30:15+07:00 匹配在 2017 年 1 月 1 日凌晨 1 点(UTC 偏移为
07:00
)与 2017 年 3 月 1 日下午 3 点(UTC 偏移为
07:00
)之间创建的议题。 UTC 偏移量
07:00
,2017 年 3 月 1 日下午 3 点。 UTC 偏移量
07:00
。
*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z
cats created:2016-03-21T14:11:00Z..2016-04-07T20:45:00Z 匹配在 2016 年 3 月 21 日下午 2:11 与 2016 年 4 月 7 日晚上 8:45 之间创建的议题。
⚓ 注:按仓库创建或上次更新时间搜索
您可以基于创建时间或上次更新时间过滤仓库。 对于仓库创建,您可以使用
created
限定符;要了解仓库上次更新的时间,您要使用
pushed
限定符。
pushed
限定符将返回仓库列表,按仓库中任意分支上最近进行的提交排序。
排除特定结果
您可以使用
NOT
语法排除包含特定字词的结果。
NOT
运算符只能用于字符串关键词, 不适用于数字或日期。
查询示例
NOT
hello NOT world 匹配含有 "hello" 字样但不含有 "world" 字样的仓库。
缩小搜索结果范围的另一种途径是排除特定的子集。 您可以为任何搜索限定符添加
-
前缀,以排除该限定符匹配的所有结果。
查询示例
-*QUALIFIER*
cats stars:>10 -language:javascript 匹配含有 "cats" 字样、有超过 10 个星号但并非以 JavaScript 编写的仓库。mentions:defunkt -org:github 匹配提及 @defunkt 且不在 GitHub 组织仓库中的议题
对带有空格的查询使用引号
如果搜索含有空格的查询,您需要用引号将其括起来。 例如:
- cats NOT "hello world" 匹配含有 "cats" 字样但不含有 "hello world" 字样的仓库。
- build label:"bug fix" 匹配具有标签 "bug fix"、含有 "build" 字样的议题。
某些非字母数字符号(例如空格)会从引号内的代码搜索查询中删除,因此结果可能出乎意料。
使用用户名的查询
如果搜索查询包含需要用户名的限定符,例如
user
、
actor
或
assignee
,您可以使用任何 GitHub 用户名指定特定人员,或使用
@me
指定当前用户。
查询示例
QUALIFIER:USERNAME
author:nat 匹配 @nat 创作的提交。
QUALIFIER:@me
is:issue assignee:@me 匹配已分配给结果查看者的议题
@me
只能与限定符一起使用,而不能用作搜索词,例如
@me main.workflow
。
版权归原作者 儒雅的烤地瓜 所有, 如有侵权,请联系我们删除。