恕我直言,你可能连 GitHub 搜索都不会用 - 如何精准搜索的神仙技巧
大家好,我是你们的 前端章鱼猫,一个不喜欢喵、又不喜欢吃鱼的超级猫 ~
今天给大家带来的是 在 GitHub 上如何精准搜索的神仙技巧。
【前端GitHub:https://github.com/biaochenxuying/FrontEndGitHub 】,专注于挖掘 GitHub 上优秀的前端开源项目,专注于挖掘 GitHub 上优秀的前端开源项目,并以专题的形式推荐,每专题大概 10 个好项目,每周会有一到三篇精华文章推送。涵盖 JavaScript、Vue、React、Node、小程序、Flutter、Deno、HTML、CSS、数据结构与算法 等等。
平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目 。
以下为【前端GitHub】的第 4 期内容。
普通的搜索
相信一般人搜索项目时,都是直接搜索技术栈相关的项目。
高级一点的搜索,会根据 最匹配、最多 Star 来进行排序、选择相应的语言、选择仓库或者代码来进行筛选。
但是 GitHub 的搜索功能只支持以上这些而已吗 ?
No!
如果你只会用以上的功能,那你知道的仅仅是 GitHub 搜索的冰山一角!
GitHub 的搜索是非常强大的!下面介绍更高级的搜索技巧。
搜索语法
搜索 GitHub 时,你可以构建匹配特定数字和单词的查询。
查询大于或小于另一个值的值
您可以使用 >
、>=
、<
和 <=
搜索大于、大于等于、小于以及小于等于另一个值的值。
查询 | 示例 |
---|---|
>*n* |
vue vue:>1000 匹配含有 "vue" 字样、星标超过 1000 个的仓库。 |
>=*n* |
vue topics:>=5 匹配含有 "vue" 字样、有 5 个或更多主题的仓库。 |
<*n* |
vue size:<10000 匹配小于 10 KB 的文件中含有 "vue" 字样的代码。 |
<=*n* |
vue stars:<=50 匹配含有 "vue" 字样、星标不超过 50 个的仓库。 |
您还可以使用 范围查询 搜索大于等于或小于等于另一个值的值。
查询 | 示例 |
---|---|
*n*..* |
vue stars:10..* 等同于 stars:>=10 并匹配含有 "vue" 字样、有 10 个或更多星号的仓库。 |
*..*n* |
vue stars:*..10 等同于 stars:<=10 并匹配含有 "vue" 字样、有不超过 10 个星号的仓库。 |
查询范围之间的值
您可以使用范围语法 *n*..*n*
搜索范围内的值,其中第一个数字 n 是最低值,而第二个是最高值。
查询 | 示例 |
---|---|
*n*..*n* |
vue stars:10..50 匹配含有 "vue" 字样、有 10 到 50 个星号的仓库。 |
查询日期
您可以通过使用 >
、>=
、<
、<=
和 范围查询 搜索早于或晚于另一个日期,或者位于日期范围内的日期。
日期格式必须遵循 ISO8601 标准,即 YYYY-MM-DD
(年-月-日)。
查询 | 示例 |
---|---|
>*YYYY*-*MM*-*DD* |
vue created:>2016-04-29 匹配含有 "vue" 字样、在 2016 年 4 月 29 日之后创建的议题。 |
>=*YYYY*-*MM*-*DD* |
vue created:>=2017-04-01 匹配含有 "vue" 字样、在 2017 年 4 月 1 日或之后创建的议题。 |
<*YYYY*-*MM*-*DD* |
vue pushed:<2012-07-05 匹配在 2012 年 7 月 5 日之前推送的仓库中含有 "vue" 字样的代码。 |
<=*YYYY*-*MM*-*DD* |
vue created:<=2012-07-04 匹配含有 "vue" 字样、在 2012 年 7 月 4 日或之前创建的议题。 |
*YYYY*-*MM*-*DD*..*YYYY*-*MM*-*DD* |
vue pushed:2016-04-30..2016-07-04 匹配含有 "vue" 字样、在 2016 年 4 月末到 7 月之间推送的仓库。 |
*YYYY*-*MM*-*DD*..* |
vue created:2012-04-30..* 匹配在 2012 年 4 月 30 日之后创建、含有 "vue" 字样的议题。 |
*..*YYYY*-*MM*-*DD* |
vue created:*..2012-04-30 匹配在 2012 年 7 月 4 日之前创建、含有 "vue" 字样的议题。 |
您也可以在日期后添加可选的时间信息 THH:MM:SS+00:00
,以便按小时、分钟和秒进行搜索。 这是 T
,随后是 HH:MM:SS
(时-分-秒)和 UTC 偏移 (+00:00
)。
查询 | 示例 |
---|---|
*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*+*00*:*00* |
vue 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 |
vue created:2016-03-21T14:11:00Z..2016-04-07T20:45:00Z 匹配在 2016 年 3 月 21 日下午 2:11 与 2016 年 4 月 7 日晚上 8:45 之间创建的议题。 |
排除特定结果
您可以使用 NOT
语法排除包含特定字词的结果。 NOT
运算符只能用于字符串关键词, 不适用于数字或日期。
查询 | 示例 |
---|---|
NOT |
hello NOT world 匹配含有 "hello" 字样但不含有 "world" 字样的仓库。 |
缩小搜索结果范围的另一种途径是排除特定的子集。 您可以为任何搜索限定符添加 -
前缀,以排除该限定符匹配的所有结果。
查询 | 示例 |
---|---|
-*QUALIFIER* |
vue stars:>10 -language:javascript 匹配含有 "vue" 字样、有超过 10 个星号但并非以 JavaScript 编写的仓库。 |
mentions:biaochenxuying -org:github 匹配提及 @biaochenxuying 且不在 GitHub 组织仓库中的议题 |
对带有空格的查询使用引号
如果搜索含有空格的查询,您需要用引号将其括起来。 例如:
- cats NOT "hello world" 匹配含有 "vue" 字样但不含有 "hello world" 字样的仓库。
- build label:"bug fix" 匹配具有标签 "bug fix"、含有 "build" 字样的议题。
某些非字母数字符号(例如空格)会从引号内的代码搜索查询中删除,因此结果可能出乎意料。
使用用户名的查询
如果搜索查询包含需要用户名的限定符,例如 user
、actor
或 assignee
,您可以使用任何 GitHub 用户名指定特定人员,或使用 @me
指定当前用户。
查询 | 示例 |
---|---|
QUALIFIER:USERNAME |
author:biaochenxuying 匹配 @biaochenxuying 创作的提交。 |
QUALIFIER:@me |
is:issue assignee:@me 匹配已分配给结果查看者的议题 |
@me
只能与限定符一起使用,而不能用作搜索词,例如 @me main.workflow
。
高级的搜索
按仓库名称、说明或自述文件内容搜索
通过 in
限定符,您可以将搜索限制为仓库名称、仓库说明、自述文件内容或这些的任意组合。
如果省略此限定符,则只搜索仓库名称和说明。
限定符 | 示例 |
---|---|
in:name |
vue in:name 匹配其名称中含有 "jquery" 的仓库。 |
in:description |
vue in:name,description 匹配其名称或说明中含有 "vue" 的仓库。 |
in:readme |
vue in:readme 匹配其自述文件中提及 "vue" 的仓库。 |
repo:owner/name |
repo:biaochenxuying/blog 匹配特定仓库名称,比如:用户为 biaochenxuying 的 blog 项目。 |
在用户或组织的仓库内搜索
要在 特定用户或组织
拥有的所有仓库中搜索,您可以使用 user
或 org
限定符。
限定符 | 示例 |
---|---|
user:*USERNAME* |
user:biaochenxuying forks:>=100 匹配来自 @biaochenxuying、拥有超过 100 复刻的仓库。 |
org:*ORGNAME* |
org:github 匹配来自 GitHub 的仓库。 |
按仓库大小搜索
size
限定符使用 大于、小于和范围限定符 查找匹配特定大小(以千字节为单位)的仓库。
限定符 | 示例 |
---|---|
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" 一词的的仓库。 |
按复刻数量搜索
forks
限定符使用大于、小于和范围限定符指定仓库应具有的复刻数量。
限定符 | 示例 |
---|---|
forks:*n* |
forks:5 匹配只有 5 个复刻的仓库。 |
forks:>=205 匹配具有至少 205 个复刻的仓库。 | |
forks:<90 匹配具有少于 90 个复刻的仓库。 | |
forks:10..20 匹配具有 10 到 20 个复刻的仓库。 |
按星号数量搜索
您可以使用 大于、小于和范围限定符 基于仓库具有的 星标 数量搜索仓库
限定符 | 示例 |
---|---|
stars:*n* |
stars:500 匹配恰好具有 500 个星号的仓库。 |
stars:10..20 匹配具有 10 到 20 个星号、小于 1000 KB 的仓库。 | |
stars:>=500 fork:true language:vue 匹配具有至少 500 个星号,包括复刻的星号(以 vue 编写)的仓库。 |
按仓库创建或上次更新时间搜索
你可以基于创建时间或上次更新时间过滤仓库。
- 对于仓库创建,您可以使用
created
限定符; - 要了解仓库上次更新的时间,您要使用
pushed
限定符。pushed
限定符将返回仓库列表,按仓库中任意分支上最近进行的提交排序。
两者均采用日期作为参数。 日期格式必须遵循 ISO8601 标准,即 YYYY-MM-DD
(年-月-日)。
也可以在日期后添加可选的时间信息 THH:MM:SS+00:00
,以便按小时、分钟和秒进行搜索。 这是 T
,随后是 HH:MM:SS
(时-分-秒)和 UTC 偏移 (+00:00
)。
日期支持 大于、小于和范围限定符
。
限定符 | 示例 |
---|---|
created:*YYYY-MM-DD* |
vue created:<2020-01-01 匹配具有 "vue" 字样、在 2020 年之前创建的仓库。 |
pushed:*YYYY-MM-DD* |
css pushed:>2020-02-01 匹配具有 "css" 字样、在 2020 年 1 月之后收到推送的仓库。 |
vue pushed:>=2020-03-06 fork:only 匹配具有 "vue" 字样、在 2020 年 3 月 6 日或之后收到推送并且作为复刻的仓库。 |
按语言搜索
您可以基于其编写采用的主要语言搜索仓库。
限定符 | 示例 |
---|---|
language:*LANGUAGE* |
vue language:javascript 匹配具有 "vue" 字样、以 JavaScript 编写的仓库。 |
按主题搜索
您可以查找归类为特定 主题 的所有仓库。
限定符 | 示例 |
---|---|
topic:*TOPIC* |
topic:algorithm 匹配已归类为 "algorithm" 主题的仓库。 |
估计又有很多人不知道 GitHub 上有话题一说的吧。
按主题数量搜索
您可以使用 topics
限定符以及 大于、小于和范围限定符 按应用于仓库的 主题 数量搜索仓库。
限定符 | 示例 |
---|---|
topics:*n* |
topics:5 匹配具有五个主题的仓库。 |
topics:>3 匹配超过三个主题的仓库。 |
使用可视界面搜索
还可以使用 search page 或 advanced search page 搜索 GitHub 哦。
这种搜索方式,估计就更少人知道了吧。
advanced search page 提供用于构建搜索查询的可视界面。
您可以按各种因素过滤搜索,例如仓库具有的星标数或复刻数。 在填写高级搜索字段时,您的查询将在顶部搜索栏中自动构建。
按许可搜索
您可以按其许可搜索仓库。 您必须使用许可关键词按特定许可或许可系列过滤仓库。
限定符 | 示例 |
---|---|
license:*LICENSE_KEYWORD* |
license:apache-2.0 匹配根据 Apache License 2.0 授权的仓库。 |
按公共或私有仓库搜索
您可以基于仓库是公共还是私有来过滤搜索。
限定符 | 示例 |
---|---|
is:public |
is:public org:github 匹配 GitHub 拥有的公共仓库。 |
is:private |
is:private pages 匹配您有访问权限且包含 "pages" 字样的私有仓库。 |
按公共或私有仓库搜索
您可以根据仓库是否为镜像以及托管于其他位置托管来搜索它们。
限定符 | 示例 |
---|---|
mirror:true |
mirror:true GNOME 匹配是镜像且包含 "GNOME" 字样的仓库。 |
mirror:false |
mirror:false GNOME 匹配并非镜像且包含 "GNOME" 字样的仓库。 |
基于仓库是否已存档搜索
你可以基于仓库是否已存档来搜索仓库。
限定符 | 示例 |
---|---|
archived:true |
archived:true GNOME 匹配已存档且包含 "GNOME" 字样的仓库。 |
archived:false |
archived:false GNOME 匹配未存档且包含 "GNOME" 字样的仓库。 |
基于具有 good first issue
或 help wanted
标签的议题数量搜索
您可以使用限定符 help-wanted-issues:>n
和 good-first-issues:>n
搜索具有最少数量标签为 help-wanted
或 good-first-issue
议题的仓库。
限定符 | 示例 |
---|---|
good-first-issues:>n |
good-first-issues:>2 javascript 匹配具有超过两个标签为 good-first-issue 的议题且包含 "javascript" 字样的仓库。 |
help-wanted-issues:>n |
help-wanted-issues:>4 react 匹配具有超过四个标签为 help-wanted 的议题且包含 "React" 字样的仓库。 |
学习
其实,以上很多内容的都是来自于 GitHub 的官方文档,如果你还想学习更多技巧,请看
如果你还不了解或者不会使用 GitHub ,可以看看这一章节:
Git 和 GitHub 学习资源 :https://docs.github.com/cn/free-pro-team@latest/github/getting-started-with-github/git-and-github-learning-resources
最后
[前端GitHub] 地址:https://github.com/biaochenxuying/FrontEndGitHub
平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目。
觉得有用 ?喜欢就收藏,顺便点个赞吧,你的支持是我最大的鼓励!
往期精文
恕我直言,你可能连 GitHub 搜索都不会用 - 如何精准搜索的神仙技巧的更多相关文章
- 使用git提交到github,每次都要输入用户名和密码的解决方法
使用git提交文件到github,每次都要输入用户名和密码,操作起来很麻烦,以下方法可解决,记录以下. 原因:在clone 项目的时候,使用了 https方式,而不是ssh方式. 默认clone 方式 ...
- 使用git提交代码到github,每次都要输入用户名和密码的解决方法
自从使用git提交代码到github后,发现自己使用git的功力增长了不少,但也遇到不少问题.比如,使用git提交代码到github的时候,经常要求输入用户名和密码,类似这种: 网上有这么一种解决方法 ...
- 搜索广告与广告网络Demand技术-搜索广告
搜索广告 搜索广告就是一个典型的Ad Network,但是搜索广告非常重要,它的收入非常高,所以它有其独特之处,复杂度也比展示广告要高.它与展示广告在点击率预测,检索部分差不多,它的特点:1. 用户定 ...
- 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字
仿百度壁纸客户端(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Frag ...
- 百度站内搜索https不可用切换api搜索,加上谷歌api站内搜索
google推https几年了,百度开始宣传全面https,但是,百度站内搜索 自己的服务却不走https,接口报错.百度分享也是. 然后采用http://search.zhoulujun.cn/cs ...
- 仿百度壁纸client(五)——实现搜索动画GestureDetector手势识别,动态更新搜索keyword
仿百度壁纸client(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸client(一)--主框架搭建,自己定义Tab + ViewPager ...
- 【搜索引擎】 PostgreSQL 10 实时全文检索和分词、相似搜索、模糊匹配实现类似Google搜索自动提示
需求分析 要通过PostgreSQL实现类似Google搜索自动提示的功能,例如要实现一个查询海量数据中的商品名字,每次输入就提示用户各种相关搜索选项,例如淘宝.京东等电商查询 思路 这个功能可以用 ...
- Android搜索功能的案例,本地保存搜索历史记录......
开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示: 本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...
- 分布式搜索ElasticSearch构建集群与简单搜索实例应用
分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...
随机推荐
- ERP应收应付进阶操作与子流程--开源软件诞生29
赤龙ERP应收应付进阶讲解--第29篇 用日志记录"开源软件"的诞生 [进入地址 点亮星星]----祈盼着一个鼓励 博主开源地址: 码云:https://gitee.com/red ...
- [sql 注入] insert 报错注入与延时盲注
insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+--------- ...
- 巧妙使用MathType快速编写数学函数公式
在我们日常的工作与学习中,你是否也会遇到过无法在电脑中编写数学函数公式的情况呢? 简单的数学函数公式或许经过我们不懈的努力也可以成功的编写,不过这会耽误我们大把的时间. 想象一下,假如你的老板急着催你 ...
- vulnhub: DC 9
信息收集: root@kali:/opt/test# nmap -A -v 192.168.76.137 Starting Nmap 7.80 ( https://nmap.org ) at 2020 ...
- HTML常用标签总结 [建议收藏]
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 1. 标题标签 <h1> </h1> ...
- Linux没有netstat和ifconfig命令问题
安装了精简版命令行centos7系统,运行netsta查看端口和ifconfig查看IP命令都提示找不到命令. 解决方法: yum search ifconfig 通过yum search 这个命令我 ...
- [Android systrace系列] systrace的信息从哪里来
-------------------------------------------------------------- 这篇文章的小目标: 1. systrace是怎么抓出来的 2. 这些信息的 ...
- FDR校正
一.假设检验 假设检验的基本思路是: 设立零假设(null hypothesis)H0,以及与零假设H0相对应的非零假设(alternative hypothesis)H1,在假设H0成立的前提下,计 ...
- form 表单上传文件及传输数据的编码格式
form中的 action 控制请求往什么地方提交 method 请求方式 如果不写默认是get 请求 如果想传文件 必须要把默认的urlencoded的改成enctype="multi ...
- rest-framework 版本控制
一 作用: 用于版本的控制 二 内置的版本控制类: from rest_framework.versioning import QueryParameterVersioning,AcceptHeade ...