你真的知道如何在 GitHub 上高效搜索开源项目吗?
作者 | 侯树成
本文经授权转自Tomcat那些事儿
GitHub 的流行及其在开源世界的受欢迎程度自不必多言。再加上近来GitHub 官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银买的。可见微软收购后,依然没有改变 GitHub 的定位,甚至还更进一步。
花开两朵,各表一枝。我们今天想要聊的并不是 GitHub 多么重要,而是要说一下 GitHub 的搜索功能。
你在 GitHub 上搜索代码时,是怎样操作的呢?是不是也是像我这样,直接在搜索框里输入要检索的内容,然后不断在列表里翻页找自己需要的内容?
或者是简单筛选下,在左侧加个语言的过滤项。
再或者改变一下列表的排序方式:
这就是「全部」了吗?
一般的系统检索功能,都会有一个「高级搜索」的功能。需要在另外的界面里展开,进行二次搜索之类的。 GitHub 有没有类似的呢?
答案是「肯定的」。做为一个为万千工程师提供服务的网站,不仅要有,而且还要技术范儿。
如果我们自己开发一个类似的应用,会怎样实现呢?
带着思路,咱们一起来看看,GitHub 是怎样做的。
这里我们假设正要学习 Spring Cloud,要找一个 Spring Cloud 的 Demo 参考练手。
明确搜索仓库标题、仓库描述、README
GitHub 提供了便捷的搜索方式,可以限定只搜索仓库的标题、或者描述、README 等。
以 Spring Cloud 为例,一般一个仓库,大概是这样的
其中,红色箭头指的两个地方,分别是仓库的名称和描述。咱们可以直接限定关键字只查特定的地方。比如咱们只想查找仓库名称包含 Spring Cloud 的仓库,可以使用语法
in:name 关键词
如果想查找描述的内容,可以使用这样的方式:
in:descripton 关键词
这里就是搜索上面项目描述的内容。
一般项目,都会有个 README 文件,如果要查该文件包含特定关键词的话,我想你猜到了:
in:readme 关键词
明确搜索 star、fork 数大于多少的
一个项目 star 数的多少,一般代表该项目的受欢迎程度。虽然现在也有垃圾项目刷 star ,但毕竟是少数, star 依然是个不错的衡量标准。
stars: > 数字 关键字。
比如咱们要找 star 数大于 3000 的Spring Cloud 仓库,就可以这样:
stars:>3000 spring cloud
如果不加 >= 的话,是要精确找 star 数等于具体数字的,这个一般有点困难。
如果要找在指定数字区间的话,使用:
stars: 10..20 关键词
fork 数同理,将上面的 stars 换成 fork,其它语法相同:
明确搜索仓库大小的
比如你只想看个简单的 Demo,不想找特别复杂的且占用磁盘空间较多的,可以在搜索的时候直接限定仓库的 size 。
使用方式:
size:>=5000 关键词
这里注意下,这个数字代表 K, 5000 代表着5M。
明确仓库是否还在更新维护
我们在确认是否要使用一些开源产品、框架的时候,是否继续维护是很重要的一点。如果已经过时没人维护的东西,踩了坑就不好办了。而在 GitHub 上找项目的时候,不再需要每个都点到项目里看看最近 push 的时间,直接在搜索框即可完成。
元旦刚过,比如咱们要找临近年底依然在勤快更新的项目,就可以直接指定更新时间在哪个时间前或后的。
通过这样一条搜索 pushed:>2019-01-03 spring cloud
咱们就找到了 1 月 3 号之后,还在更新的项目。
你是想找指定时间之前或之后创建的仓库也是可以的,把 pushed 改成 created 就行。
明确搜索仓库的 LICENSE
咱们经常使用开源软件,一定都知道,开源软件也是分不同的「门派」不同的 LICENSE。开源不等于一切免费,不同的许可证要求也大不相同。 2018年就出现了 Facebook 修改 React 的许可协议导致各个公司纷纷修改自己的代码,寻找替换的框架。
例如咱们要找协议是最为宽松的 Apache License 2 的代码,可以这样:
license:apache-2.0 spring cloud
其它协议就把 apache-2.0 替换一下即可,比如换成 mit 之类的。
明确搜索仓库的语言
比如咱们就找 Java 的库, 除了像上面在左侧点击选择之外,还可以在搜索中过滤。像这样:
language:java 关键词
明确搜索某个人或组织的仓库
比如咱们想在 GitHub 上找一下某个大神是不是提交了新的功能,就可以指定其名称后搜索,例如咱们看下 Josh Long 有没有提交新的 Spring Cloud 的代码,可以这样使用:
user:joshlong
组合使用一下,把 Java 项目过滤出来,多个查询之间「空格」分隔即可。
user:joshlong language:java
找某个组织的代码话,可以这样:
org:spring-cloud 就可以列出具体org 的仓库。
【完】
CSDN 开源开发者交流群
立即扫小编的微信二维码加入吧!
加好友时请备注#开源+公司+职位#
如无备注,不会通过哦
热 文 推 荐
☞ 小米为什么拆分红米? | 畅言
☞ 软件工程师如何笑着活下去?
☞ 如何创建复杂的机器学习项目?
☞“对不起,你的离职是我的错!”
☞ Gartner的预言:通向混合IT之旅
☞ 阿里“菜鸟”AI?
☞ 刚刚!华为又被美国盯上了!
☞ 心疼!能为程序员男友做些什么吗?
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"
点击“阅读原文”,打开 CSDN App 阅读更贴心!
喜欢就点击“好看”吧!
你真的知道如何在 GitHub 上高效搜索开源项目吗?相关推荐
- 如何在 GitHub 上高效搜索开源项目(转载)
如何在 GitHub 上高效搜索开源项目 查看全文 http://www.taodudu.cc/news/show-1347360.html 相关文章: Mybatis.cfg配置标签的顺序问题 To ...
- 如何在 GitHub 上高效搜索开源项目
GitHub 的流行及其在开源世界的受欢迎程度自不必多言.再加上近来GitHub 官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银买的.可见微软收购后,依然没有改变 GitHub ...
- 如何在 GitHub 上高效阅读源码?
原文链接: 如何在 GitHub 上高效阅读源码? 之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下. 结果就是一个月过去了,产出基本为零. 我 ...
- 如何在GitHub上传并更新项目
如何在GitHub上传自己的项目 这两个博客可以参考,非常好 https://www.jianshu.com/p/6de75cba5c8a https://www.jianshu.com/p/6478 ...
- GitHub上优秀的开源项目(转载)
GitHub上优秀的开源项目(转载) 转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 ...
- 2020年10月份Github上热门的开源项目
10月份GitHub上最热门的Java开源项目排行已经出炉啦,一起来看看上榜详情吧: 1. base-admin https://github.com/huanzi-qch/base-admin St ...
- 如何在GitHub上传自己的项目(新手详细版)
目录 git教程: 详细过程 可能出现的问题(避坑) 代码总结 git教程: 菜鸟教程 廖雪峰 权威Git书籍:ProGit(中文版) git官网 git手册 一篇博客教程 详细过程 注册GitHub ...
- 1月份Github上热门Python开源项目
1月份GitHub上最热门的Python开源项目排行已经出炉啦,一起来看看上榜详情: 1. fastapi https://github.com/tiangolo/fastapi Star 9051 ...
- 回顾 | 在 GitHub 上贡献到开源项目
点击蓝字 关注我们 精彩回顾 GitHub 是世界上最大的开源社区,拥有数百万个开源项目.GitHub 的优势之一是在项目上进行协作非常容易.在本研讨会中,我们将介绍在 GitHub 上找到开源项目并 ...
最新文章
- 开放下载! | 《AI时代下的汽车业数字化变革》
- springboot使用PageHelper实现分页
- php where or,php – laravel中whereOr和orWhere之间的区别
- ansys 内聚力模型_《ANSYS Workbench有限元分析实例详解(静力学)》,9787115446312
- 巴伦变压器电路图_基于变压器原理的巴伦电路系统分析
- Sublime Text 2 注册码/破解方法【蕃薯耀】
- 复制粘贴之后出现问号怎么办_复制粘贴文字变乱码解决
- pythonmath库阶乘函数_Python--math库
- 华为实验21-OSPF的DR与BDR
- 修炼你的《九阳神功》行走江湖
- 打新股和打新债有什么区别?
- 自动识别Windows Office 产品GVLK
- maven的下载和安装教程
- LaTex(windet及miktex)安装教程
- OriginPro2021安装注意事项(详细)
- python 全栈开发是什么意思_python全栈要学什么
- 【数据库专题】“第一幕”——《狗叫江湖》之数据库系统概论(续集)【蒸滴很c】
- 蓝桥杯双阶乘 (python)
- JavaWeb仿twitter个人社交网络及微博服务网站
- IO控制器 IO控制方式(程序直接控制、中断驱动、DMA方式、通道控制方式)
热门文章
- nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面
- seo模拟点击软件_百度快排软件原理分析
- jni 结构体转对象_JVM系列(一)JVM启动流程和基本结构
- 编译过程、静态库和动态库
- Linux下Socket客户端服务器通信
- 第11章 递归分形树(《Python趣味创意编程》教学视频)
- 让计算机教育因云而变,阿里云正式发布云原生人才培养合作计划
- 从入门到入土:基于C语言实现并发Web服务器|父进程子进程|代码展示
- Java static、 final修饰符
- iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条...