作者 | 侯树成

本文经授权转自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 上高效搜索开源项目吗?相关推荐

  1. 如何在 GitHub 上高效搜索开源项目(转载)

    如何在 GitHub 上高效搜索开源项目 查看全文 http://www.taodudu.cc/news/show-1347360.html 相关文章: Mybatis.cfg配置标签的顺序问题 To ...

  2. 如何在 GitHub 上高效搜索开源项目

    GitHub 的流行及其在开源世界的受欢迎程度自不必多言.再加上近来GitHub 官方又搞了个大新闻:私有仓库也改为免费使用,这在原来可是需要真金白银买的.可见微软收购后,依然没有改变 GitHub ...

  3. 如何在 GitHub 上高效阅读源码?

    原文链接: 如何在 GitHub 上高效阅读源码? 之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下. 结果就是一个月过去了,产出基本为零. 我 ...

  4. 如何在GitHub上传并更新项目

    如何在GitHub上传自己的项目 这两个博客可以参考,非常好 https://www.jianshu.com/p/6de75cba5c8a https://www.jianshu.com/p/6478 ...

  5. GitHub上优秀的开源项目(转载)

    GitHub上优秀的开源项目(转载) 转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 ...

  6. 2020年10月份Github上热门的开源项目

    10月份GitHub上最热门的Java开源项目排行已经出炉啦,一起来看看上榜详情吧: 1. base-admin https://github.com/huanzi-qch/base-admin St ...

  7. 如何在GitHub上传自己的项目(新手详细版)

    目录 git教程: 详细过程 可能出现的问题(避坑) 代码总结 git教程: 菜鸟教程 廖雪峰 权威Git书籍:ProGit(中文版) git官网 git手册 一篇博客教程 详细过程 注册GitHub ...

  8. 1月份Github上热门Python开源项目

    1月份GitHub上最热门的Python开源项目排行已经出炉啦,一起来看看上榜详情: 1. fastapi https://github.com/tiangolo/fastapi Star 9051 ...

  9. 回顾 | 在 GitHub 上贡献到开源项目

    点击蓝字 关注我们 精彩回顾 GitHub 是世界上最大的开源社区,拥有数百万个开源项目.GitHub 的优势之一是在项目上进行协作非常容易.在本研讨会中,我们将介绍在 GitHub 上找到开源项目并 ...

最新文章

  1. 开放下载! | 《AI时代下的汽车业数字化变革》
  2. springboot使用PageHelper实现分页
  3. php where or,php – laravel中whereOr和orWhere之间的区别
  4. ansys 内聚力模型_《ANSYS Workbench有限元分析实例详解(静力学)》,9787115446312
  5. 巴伦变压器电路图_基于变压器原理的巴伦电路系统分析
  6. Sublime Text 2 注册码/破解方法【蕃薯耀】
  7. 复制粘贴之后出现问号怎么办_复制粘贴文字变乱码解决
  8. pythonmath库阶乘函数_Python--math库
  9. 华为实验21-OSPF的DR与BDR
  10. 修炼你的《九阳神功》行走江湖
  11. 打新股和打新债有什么区别?
  12. 自动识别Windows Office 产品GVLK
  13. maven的下载和安装教程
  14. LaTex(windet及miktex)安装教程
  15. OriginPro2021安装注意事项(详细)
  16. python 全栈开发是什么意思_python全栈要学什么
  17. 【数据库专题】“第一幕”——《狗叫江湖》之数据库系统概论(续集)【蒸滴很c】
  18. 蓝桥杯双阶乘 (python)
  19. JavaWeb仿twitter个人社交网络及微博服务网站
  20. IO控制器 IO控制方式(程序直接控制、中断驱动、DMA方式、通道控制方式)

热门文章

  1. nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面
  2. seo模拟点击软件_百度快排软件原理分析
  3. jni 结构体转对象_JVM系列(一)JVM启动流程和基本结构
  4. 编译过程、静态库和动态库
  5. Linux下Socket客户端服务器通信
  6. 第11章 递归分形树(《Python趣味创意编程》教学视频)
  7. 让计算机教育因云而变,阿里云正式发布云原生人才培养合作计划
  8. 从入门到入土:基于C语言实现并发Web服务器|父进程子进程|代码展示
  9. Java static、 final修饰符
  10. iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条...