GitHub 如何更精准的找到你需要的开源库

第三方开源库可能算是这个行业最美妙的东西之一,好的开源库经过完善的开发和验证,帮助我们解决了开发中遇到的很多通用问题,不需要我们重复发明轮子。 可以说开源社区极大的提高了整个产业的生产力。而说到开源项目,就不能不提 GitHub,它几乎已经成为了开源项目的首选存放位置。那么如何在 GitHub 上更高效精确的找到你需要的开源项目呢,今天和大家聊聊这个话题。

高级搜索

和标题对应,这次主要和大家聊一下搜索的使用技巧。 我们进入 GitHub 后,会在顶部看到一个搜索框:

GitHub 如何更精准的找到你需要的开源库

在这里输入关键字,GitHub 就会呈现出相关的结果。 当然这是最基本的用法, 除了这个之外, GitHub 还提供了高级搜索:https://github.com/search/advanced。 进入这个页面后,你会看到一系列搜索选项:

GitHub 如何更精准的找到你需要的开源库

比如仓库的主要语言, Star 数量等等。 这些条件就能更精确的筛选出我们需要的结果。 比如要搜索 Swift 语言的网络相关的仓库,设置好后,顶部的搜索条就会变成这个样子:

GitHub 如何更精准的找到你需要的开源库

network 是我们的搜索关键词, 后面的 language:swift 代表只搜索 swift 语言的代码库。 这样搜索后的结果就只会显示你关注的 swift 语言了。 另外刚才搜索框中的这个特殊语法,其实在平时顶部的通用搜索框中也是可以使用的。 这个有点像我们通用搜索引擎的一些搜索语法。

fork

fork 是 GitHub 上面的一个概念。 比如你的库做的比较好,其他第三方复制你的库,并且根据他们的额外需求做一些二次开发。 有时候一些好的二次开发库,也会非常的有用。 这些二次开发的分支,就称作一个仓库的 fork。

默认情况下 GitHub 的搜索功能是搜索不到 fork 的。 只有你显式的指定需要 forks 才可以。 这需要另外一个语法。 fork:true和 fork:only。 fork:true 的含义是搜索结果中可以带有 fork 库。 fork:only 表示搜索结果中只显示 fork 库。

另外,GitHub 搜索的规则是, 只有 fork 库的 star 数量比原始库多的,才会被显示到搜索结果中。如果 star 数没有超过原始库,是不能被搜索到的。

比如这个搜索条件 network language:swift fork:true 表示搜索 swift 语言的仓库,并且包含 fork 库。

代码搜索

除了仓库搜索之外,GitHub 还支持代码搜索,比如你想了解某个 API 其他人如何使用,可以这样:

GitHub 如何更精准的找到你需要的开源库

在搜索结果中,第二个 Code 选项卡用于代码搜索。 上面我们用的搜索公式是 NSURLSession language:swift 。 除了搜索代码文件内容之外, 我们还可以按照路径来搜索, 只需要加入 in:path 搜索条件:

GitHub 如何更精准的找到你需要的开源库

这次虽然还是代码搜索, 但是搜索的范围是在文件路径中,只会搜索文件路径中包含 NSURLSession 的内容。 这个能力大家不一定会经常用到,但是了解一下还是有好处的,说不定在哪天能帮你解决一个大问题。

Issues 搜索

除了代码搜索之外,另外一个比较有用的是 Issues 搜索,我们平时在使用开源库的时候难免遇到一些奇怪的问题。 其实解决这些问题最好的方式之一就是在这个开源库自己的 GitHub 项目中寻找。

比如 NSURLSession is:issue is:closed repo:Alamofire/Alamofire 这条搜索, is:issue 表示我们要搜索 issue, is:closed 表示已经关闭的 issue, repo:Alamofire/Alamofire 表示我们只搜索这个仓库范围的 issue。 运行这个搜索你会得到这样的结果:

GitHub 如何更精准的找到你需要的开源库

issue 搜索可定制化的地方很多,比如你还可以搜索和某个用户相关的 issue, 通过 involves:mattt 搜索条件,比如我们这里, mattt 是 Alamofire 的作者之一,搜索和他相关的 issue,可能会更容易得到解决问题的方案:

NSURLSession is:issue is:closed repo:Alamofire/Alamofire involves:mattt

Topic 搜索

还有一个值得一说的就是 Topic 搜索, 关于 Topic 我想并不是所有的用户都了解。 简单说一下, 我们在浏览任何一个开源库主页的时候,都会看到会列出若干标签:

GitHub 如何更精准的找到你需要的开源库

比如我们这里的 Alamofire, 它包含了很多标签,有 networking,urlsession, urlrequest 等等。 这些标签就是我们所说的 Topic。 每一个 Topic 代表一个特定领域的问题,一个开源库关联到一个 Topic 上,就相当于它解决了这个特定领域的问题。

上面截图中的所有 Topic 都是可以点击的,如果点击第一个 networking, 就会得到这样一个列表:

GitHub 如何更精准的找到你需要的开源库

这里面列出了所有解决这个 Topic 问题的开源库。 Topic 的出现,给了我们一个查找所需开源库的一个新维度。 比如我们要查找 swift 网络库解决方案,可以执行这个搜索 language:swift topic:networking,有了前面的介绍的基础,我相信这个搜索的含义大家已经不难理解了:

GitHub 如何更精准的找到你需要的开源库

这里列出了所有和 networking 这个 topic 相关的开源库,并且限定到 swift 语言。 从 Topic 角度来查找我们需要的开源库是一个非常好的视角。

GitHub 还专门提供了一个页面,展示目前流行的 Topic:https://github.com/topics

结语

这次主要和大家聊了一下 GitHub 搜索的几个有趣的用法。这里和大家聊得其实也只是一小部分。 完整的 GitHub 搜索提供了非常多的能力,帮助我们更好的了解这个当前最流行的代码平台。 大家如果有兴趣,可以参看它的官方文档: https://help.github.com/categories/searching-for-information-on-github/,里面有非常全面的介绍。

转载请注明出处:https://stgod.com/3837/