GitHub的人气,GitHub在开源界的人气不用多说。另外,今天GitHub官方又出了一个大新闻:私有仓库也改为免费使用,原本需要真金白银才能购买。可以看出,在被微软收购之后,GitHub的定位没有改变,甚至更进了一步。两朵花盛开,每一朵代表一个分支。今天我们要说的不是GitHub有多重要,而是说说GitHub的搜索功能。当你在GitHub上搜索代码时,你会做什么?你是不是也和我一样,直接在搜索框中输入自己想要搜索的内容,然后在列表中不断翻页,寻找自己需要的内容?或者在简单过滤下,在左侧添加语言过滤项。或者更改列表的排序方式。这是“全部”吗?一般的系统搜索功能都会有一个“高级搜索”功能。需要在另外一个接口中展开,进行二次搜索等。GitHub有类似的东西吗?答案是“是”。作为一个为成千上万的工程师提供服务的网站,不仅要有技术风格,还要有技术风格。如果我们自己开发一个类似的应用,会如何实现呢?有了思路,我们来看看GitHub是怎么做的。这里假设我们要学习SpringCloud,找一个SpringCloudDemo参考练习。1.明确搜索仓库标题、仓库描述、READMEGitHub提供了一种方便的搜索方式,可以将搜索限制在只搜索仓库的标题、描述、README等。以SpringCloud为例,一般的仓库大概是这样的。其中,红色箭头所指的两个地方是仓库的名称和描述。我们可以直接限制关键词只查特定的地方。比如我们只想查找仓库名包含springcloud的仓库,可以使用in:name关键字的语法。如果我们要查找描述的内容,可以使用这种方法:这里的in:description关键字是搜索上面的item描述的内容。对于一般的项目,会有一个README文件。如果你想查看文件是否包含特定关键字,我想你猜对了in:readme关键字2.明确搜索star和fork数大于star数的项目。总代表该商品具有人气。虽然也有挣星星的垃圾项目,但毕竟是少数,星星还是一个很好的衡量标准。stars:>Number关键字。比如我们要找一个star数大于3000的SpringCloud仓库,我们可以这样做:stars:>3000如果springcloud不加>=,就需要准确找到star数为等于一个特定的数字,这通常有点困难。如果要在指定的数字范围内查找,使用stars:10..20关键字fork也是一样的,把上面的stars换成fork,其他语法一样。如果不想找特别复杂占用磁盘空间大的,搜索的时候可以直接限制仓库大小。使用方法:size:>=5000keyword这里注意,这个数字代表K,5000代表5M。4、判断仓库是否还在更新维护中。当我们确认是否使用一些开源产品和框架时,是否继续维护是非常重要的。如果一个东西过时了,没人维护,就很难踩坑了。在GitHub上寻找项目时,不再需要点击每个项目才能看到最新的推送时间,直接在搜索框中即可。元旦刚过,比如我们想找一个临近年底还在努力更新的项目,我们可以直接指定更新时间之前或之后的时间。通过这样搜索pushed:>2019-01-03springcloud,发现1月3号之后项目还在更新中。还可以查找在指定时间之前或之后创建的仓库,只需将更改推送到创建即可。5、明确搜索仓库的LICENSE我们经常使用开源软件,想必大家都知道开源软件对于不同的“流派”也有不同的LICENSE。开源并不意味着一切都是免费的,不同的许可证要求也有很大的不同。2018年,Facebook似乎修改了React的许可协议,导致各个公司修改自己的代码并寻找替代框架。比如我们要找协议最宽松的ApacheLicense2的代码,可以把apache-2.0替换成license:apache-2.0springcloud等协议,比如mit.6.清楚搜索仓库的语言。例如,我们正在寻找Java库。除了如上在左侧点击选择外,还可以在搜索中进行筛选。像这样:language:java关键字7.清楚地搜索某个人或组织的仓库。比如我们想查询某位高手是否在GitHub上提交了一个新的功能,我们可以指定其名称并进行搜索。例如,让我们看看JoshHasLong提交了新的SpringCloud代码?您可以结合使用user:joshlong来过滤掉Java项目并使用“空格”分隔多个查询。user:joshlonglanguage:java如果要查找某个组织的代码,可以这样做:org:spring-cloud可以列出具体组织的仓库。
