Geek姿势技术/Web资源

GitHub搜索基础:摆正姿势玩转GitHub搜索

狩酷 · 3月5日 · 2020年 · 883次已读

前言

其实很多时候,当你在寻找资源答案时,相对于普通搜索引擎,在Github里搜索会有更大的收获。但是很多童鞋不习惯或者根本不知道Github能干啥,还有很多一知半解的认识Github就是给程序猿使用的网站,普通人根本不会用。

确实经常会有这样那样的困惑,还有在学习IT编程设计相关知识时看了很多技术的学习文档、书籍、甚至视频,想动手实践,于是打开了GitHub,想找个开源项目,进行学习,获取项目实战经验。

这个时候很多童鞋又会面临这样的问题:“我不会搜啊,我该怎么找呀?”,最终只能放弃, 相信看完这篇文章,你就可以学会如何精准地在GitHub搜索项目。

github

开源项目的结构

在搜索之前,你需要先了解清楚一个开源项目是由哪些部分组成的,即它的结构:
1、name: 项目名
2、description: 项目的简要描述
3、项目的源码
4、README.md: 项目的详细情况的介绍

除了这些要素之外,项目本身的star数和fork数,也是评判一个开源项目是否火热的标准,这同时也是一个很重要的搜索标准。另外还有要注意观察这个项目的最近更新日期,因为项目越活跃,那么它的更新日期也更加频繁,几个月甚至几年没更新的那基本就是搁浅的已死项目。

开始搜索

那么要如何在Github中以正确的姿势进行搜索呢?

假设我们现在要搜索寻找 AdminLTE项目的资源 ,相信大部分小伙伴都是直接在搜索框里输入:“AdminLTE”,然后一回车,你就会发现情况像下面这样:

name搜索github

这是最简单的搜索,结果会显示非常多的开源项目,只要包含“AdminLTE”这个关键词,就会出现在结果列表中,因为项目太多了。这样一来展现出来的目录列表就太多了,你可能要花更多时间去浏览查看获得你真正需要的资源信息。

按项目名Name搜索

然而在搜索框内输入如下的代码,就可以直接搜索项目名里面包含“AdminLTE”的项目:

in:name AdminLTE

可以看到下图的结果,搜索结果数量上就比上面直接搜索少了几千条:

name搜索github

但是就算这样,其实还是有几千条的搜索结果列出来,这些搜索结果都是项目名里面带有“AdminLTE”关键字的项目,数量还是太多,那我们进行再一步的约束,比如精确到项目的star数大于5000+,代码如下:

in:name AdminLTE stars:>5000

结果是这样的:

name搜索github

搜索结果瞬间精确到位了,现在只有1个项目可供选择。当然我们一般不会把star数设置得这么高,当然一般不会设置这么高的star数,根据实际情况进行调整,同理,我们也可以按照fork的数量来进行搜索,代码和star数搜索类例如:

in:name AdminLTE stars:>5000 forks:>3000

按README来搜索

学会了按项目名搜索后,想必按README搜索的操作,就可以举一反三地推导出来了:

in:readme AdminLTE
github搜索readme

然后按上面的name搜索的同理,你也可以再次根据star数和fork数的约束来精确限制搜索的结果列表:

in:readme AdminLTE stars:>3000 forks:>3000

按descriptin搜索

按项目描述descriptin搜索,就可以在你不知道项目名称时,比较模糊地根据你的需求去进行搜索,假设需要找一些网盘的脚本插件资源,我们搜索项目描述(description)里面包含“网盘”的项目:

in:description 网盘
github搜索描述

当然,这样的结果有肯定也时一大堆很多的,假如我们是想找以python语言开发的项目, 就可以用如下代码进行约束和精确搜索结果:

in:description 网盘 language:python 
github搜索语言

如此一来搜索结果精确了很多。假如在这些项目里面,我们想要找到最近才更新的项目,意思是更新时间就在最近,我们可以这样:

in:description 网盘 language:python pushed:>2020-02-20

pushed:>2020-02-20的意思是我们把项目的最后更新时间限制到2020-02-20,我们来看看结果如何:

github搜索时间限制

搜索结果只有8个了,这几个项目就属于更新比较活跃的项目,这下再也不纠结了。

后记总结

好了,最后总结一下,我们想要进行精准搜索,无非就是增加筛选条件:

  • in:name xxx // 按照项目名搜索
  • in:readme xxx // 按照README搜索
  • in:description xxx // 按照description搜索

附加筛选条件:

  • stars:>xxx // stars数大于xxx
  • forks:>3000 // forks数大于xxx
  • language:xxx // 编程语言是xxx
  • pushed:>YYYY-MM-DD // 最后更新时间大于YYYY-MM-DD
0 条回应