关于 GitHub 的奇技淫巧
# 66.关于 GitHub 的奇技淫巧
介绍下多年来使用 GitHub 所了解到的技巧
# 学会看文档
如何学习使用 GitHub 呢?最好的方式就是:阅读官网文档。
官方文档通常比任何教程都 全面、权威、准确。网上教程和文章满天飞,但都是建立在官方文档的基础上,一旦官方文档修改了,很难做到实时同步,就可能会让学习者感到困惑。
对于有经验的程序员来说,通常都会选择阅读官方文档来学习技术。
此外,GitHub 文档还有中文版,翻译地挺到位的,非常推荐阅读。
官网文档地址:https://docs.github.com/zh (opens new window)
英文版的地址:https://docs.github.com/en (opens new window)
对于已经掌握 GitHub 基本用法的朋友,也可以利用该文档查漏补缺,了解更多提升 GitHub 使用效率和工作效率的强大功能。
# 如何找到优质项目
除了多敲代码写项目,阅读优秀项目的源码,也可以提高我们的编程能力。那么,就有几个问题需要解决:
- 去哪找
- 什么是好
- 怎么找
# 去哪找
目前业内有很多仓库托管服务平台,例如 GitHub (opens new window)、Gitee (opens new window)、SourceForge (opens new window)、OSChina (opens new window)...
但最好的一定是 GitHub。在这里,你可以找到各种各样的开源项目,大到世界知名框架、小到个人练习片段,还能和他人一起协作完成项目。
Gitee 其实就是国内版的 GitHub,但项目数远不及 GitHub。
而 OSChina (开源中国)和 Gitee 有非常紧密的合作,将一些开源项目进行了整理分类。
# 什么是好项目
首先,没有最好的项目,只有最合适的。但我们可以通过一些指标和信息来进行基本的评判。
打开一个项目的页面,一个好项目通常有如下特点:
- 更多的 star(收藏),对项目实用性的肯定
- 更多的 Fork(派生搬运),表示想要学习项目或做贡献
- 更多的 watch,表示对项目的关注度高
- 积极的 issues(问题),表示更多人使用项目并希望改进
- 积极的 Pull requests(代码合并请求),表示更多人愿意合作贡献代码
- 频繁更新最近提交时间,表示项目仍在维护
- 可直接访问的官网,更正式
- 类别标签明确,帮助开发者对项目进行定位
以 ant-design (opens new window) 为例:
然后我们接着往下看,一个好项目的 README.md(项目描述)通常会很完善,例如有图标、徽章、多种语言的文档、介绍、用法......
# 怎么找
# GitHub 搜索
最简单粗暴的方法:想学什么就搜什么,然后根据一些简单的排序规则(例如根据 star )来筛选。
例如学后端,就搜索 backend:
但这样太简单了,我们可以加上过滤条件,只需在搜索时加上一些参数即可:
-
in:name <关键字>
:指定查询仓库名称中包含“关键字”的仓库 -
in:description <关键字>
:指定查询仓库描述中包含“关键字”的仓库 -
in:readme <关键字>
:指定查询 readme 中包含“关键字”的仓库 -
stars(fork): >(=) <数字> <关键字>
:查询 star 或 fork 数大于或等于指定数字的仓库,并且指定关键字 -
stars(fork): 10..20 <关键词>
:查询 star 或 fork 数在 10 到 20 之间的仓库,并且指定关键字 -
size:>=5000 <关键词>
: 查询 star 大于等于 5000K 的仓库,并且指定关键字 -
pushed(created):>2019-11-15 <关键字>
:更新(或创建)日期在 2019 年 11 月 16 日之后的仓库,并且带关键字 -
license:apache-2.0 <关键字>
:查询 LICENSE 为 apache-2.0 的仓库,并指定关键字 -
language:java <关键词>
:查询仓库语言为 Java 的仓库,并且指定关键字 -
user:<用户名>
:查询某个用户的项目 -
org:<组织名>
:查询某个组织的项目
示例:
# 示例 1:查询仓库名包含 javascript,并且 stars 数大于 1000 的项目
in:name javascript stars:>1000
# 示例 2:查询描述中包含"小程序"、 fork 大于 100、最近更新时间在 2019-11-15、并且开发语言为 vue 的项目
in:description 小程序 fork:>100 pushed:>2019-11-15 language:vue
2
3
4
5
这么多过滤条件完全不用记,我们可以直接可以用**高级搜索页,自动生成搜索表达式:**https://github.com/search/advanced (opens new window)
更多技巧,请参考官网文档:About searching on GitHub - GitHub Docs (opens new window)
# Explore GitHub
GitHub 官方探索,基于兴趣为你推荐开源项目,精准度很高!
# Topics on GitHub
GitHub 官方提供的项目主题分类,帮助你找到合适的项目。
# GitHub 官方 Trending
GitHub官方提供的项目趋势统计,能够看到一段时间内项目和开发者新增 star 数的排行,还支持选择语言、编程语言及时间范围,帮你发现优秀、有潜力的开源项目。
# Awesome
Awesome 项目是指由社区同学共同贡献而成的项目,包含了某一技术的完整生态(如优秀开源项目、类库、工具、知识点)。比如 awesome-java (opens new window),awesome-vue (opens new window)
# hellogithub.com (opens new window)
一个分享 GitHub 上有趣、入门级的开源项目的网站。
如果想看这个网站背后的故事,可以参考作者的自白:我和 HelloGitHub (opens new window)
# searchcode.com (opens new window)
简单全面的开源代码搜索器,一键在 40 万个项目、750 亿行代码中高效搜索,还提供 API 接口
# LibHunt.com (opens new window)
汇集了 GitHub 上实用的开源项目和软件类库,让编程人员快速发现好的项目。支持近 20 种不同编程语言的项目,以及各种热门标签,可以快速搜索,还能查看项目热度。
# codelf
官网:https://unbug.github.io/codelf (opens new window)
变量命名神器,当我们写项目的时候,总会对变量名、类名、方法名有一个规范,那么就可以通过该网站来搜索其他开源平台的项目源码,帮我们匹配出合适的变量名,支持中文。
输入关键词后,可以选择和关键词相关的标签,一键跳转至项目代码。
PS:底层基于 searchcode (opens new window)。
# 在线阅读代码
找到项目后,接下来就是阅读了,为了方便开发者,GitHub 推出了在线阅读功能。
操作很简单,打开 GitHub 项目页,然后按下 "."或者 "。"键。
例如著名的 Linux (opens new window) 项目源码,打开项目页是这样的:
按下 "."或者 "。"键后,就会跳转到 https://github.dev/torvalds/linux (opens new window),这是打开了一个在线的 VSCode,并且该 VSCode 里已经导入了 Linux 的源码:
这样就不用下载到本地再打开了,非常方便。
# 在线看文档
有些项目的文档不是 Markdown (opens new window) 格式,而是 HTML (opens new window) 格式的(例如 Java Doc),那么此时在 GitHub 上看起来就直接是源代码,而不是渲染后的结果:
我们可以用一个神奇的网站:https://htmlpreview.github.io (opens new window),在这里输入你想看的 GitHub 上的 HTML 文件,就能看到渲染后的结果了:
# 在线运行代码
光阅读源码、文档效果有限,更推荐自己修改、调试和运行下项目,才能更加深入理解该项目。
而有个网站能做到这点:https://www.gitpod.io (opens new window),这是一个可以在线提供 dev 环境并运行代码的地方。
使用起来很简单,(可以直接通过 GitHub)登录,然后输入项目链接,例如我输入我的博客项目(前端项目),并选择用 VSCode(也可以选 IDEA):
然后就可以安装依赖并运行了,具体步骤就不演示了。
# 小结
善用 GitHub:
- 学会看文档
- 学会找优秀项目
三个有助于看源码的好工具:
- github.dev (opens new window):按下句号键在线看源码
- htmlpreview.github.io (opens new window):在线直接看 html 文档
- www.gitpod.io (opens new window):在云上搭建好开发环境并直接运行项目
# 参考
【硬核干货】如何高效找到优质编程项目? (opens new window)
我和 HelloGitHub (opens new window)