前言
GitHub 应该是广大开发者最常去的站点,这里面有大量的优秀项目,是广大开发者寻找资源,交友学习的好地方。尤其是前段时间 GitHub 公布了一项代码存档计划——Arctic Code Vault,要把代码埋入地下 250 米深的永久冻土层,可以将代码保存一千年。此外,GitHub 还为开发者在配置文件中设计了纪念徽章。
想想自己的代码可以作为人类的技术瑰宝被保存一千年,是不是有点自豪呢。
好了,言归正传。
虽然 GitHub 没有被 Q,但是由于 CDN 服务器都在国外,所以国内访问 GitHub 的速度实在是慢的一匹,有时候经常页面刷不出,在我获取知识的道路上增加了重重的阻碍。
所以,我肝了 3 小时,写了一个在不用 T 子的情况下,加速 GitHub 访问速度的小工具,最后会分享给大家。
同时,这篇文章也会分享其他加速 GitHub 访问的方法。算是一个比较全的整理吧。
Let's get it!
自动生成最快访问 host 的小工具
GitHub 在国内访问速度慢的原因其实有很多,但最主要的原因就是 GitHub 的分发加速网络域名遭到 DNS 的污染。为了解决这个问题,网上有很多文章提供了一个解决方案,就是通过修改 Hosts 文件,绕过国内的 DNS 解析,直接访问 GitHub 的 CDN 节点,从而达到加速的目的。
但是我看大多数关于此方法的介绍,只提供 3 个 github 的相关域名,而且需要在ipaddress.com 一个个去查,根据查到的 ip,再去自己 ping,肉眼选取最快的 ip,自行编辑成 IP+域名格式,贴到 hosts 文件里。
其实 GitHub 用到相关域名有很多,我整理了下,一共有十几个
github.global.ssl.fastly.net
github.com
assets-cdn.github.com
documentcloud.github.com
gist.github.com
help.github.com
nodeload.github.com
codeload.github.com
raw.github.com
status.github.com
training.github.com
avatars0.githubusercontent.com
avatars1.githubusercontent.com
avatars2.githubusercontent.com
avatars3.githubusercontent.com
这要是一个个去查,一个个去选取,也是挺麻烦的。
为此我写了一个工具,能自动的根据你当前 ip,去寻找这十几个域名所对应最快的 CDN 节点,如果一个 ip 对应多个 CDN 节点,工具会自动帮你去 ping 10 次,取到平均值最小的 CDN 的 IP 地址。
你需要做的,只是把最终生成的结果贴到你的 hosts 文件中即可。
这个小工具,关注「元人部落」输入 github 即可获取到。
用法很简单,只需要执行以下命令即可运行
java -jar githubhost.jar
运行起来后,浏览器输入127.0.0.1:8880即可自动进行根据你当前 Ip 进行分析:

分析大概需要十几秒,进度条会自动刷新,等进度条满了之后,即可看到生成内容:

每个地区每个运营商可能运行出来的都不一样,所以得出结果后,你就可以把这段内容追加到你 hosts 文件中(如果不知道 hosts 存放位置,可以自行 baidu),然后根据提示让 hosts 文件生效。
指定了 CDN 的访问地址,可以让你的 github 访问至少无卡顿了。
码云 GitHub 镜像站
码云提供了一个”码云急速下载“站,每天从 github 上同步一些项目。
个人感觉应该不是所有的 github 项目都会同步过来,看仓库数量,有大概 15k 的项目

如果你想 clone 一些项目去研究,可以先在这里找找有没有。码云因为是国内开源项目站点,git clone 速度自然不用担心,但是很可惜的是
1.这个镜像站点不是所有的 github 项目,不过大多数热门项目都会有
2.issue 和 release 包也没有,只有代码
3.有一天的延迟。即你看到的是一天前的项目状态
4.因为不是 github,所以你也没法通过这个 push 到 github 上的项目
GitHub 镜像站
这个镜像站为:
进入之后,完全和 github 没有任何区别,访问也很快。
尤其是 clone 代码,那是飞快啊。。。
比如,你原先要 clone,这样写
git clone https://github.com/kubernetes/kubernetes.git
现在改成:
git clone https://github.com.cnpmjs.org/kubernetes/kubernetes.git
试一下:

这个速度,应该无欲无求了吧。。。
不过这个方法可惜的是:
1.这个镜像站很不稳定,你时常会看到:

2.你每次 clone 还需要自己去修改 url,有点不方便
3.你依旧没法 push
GitClone 站点
在寻找解决之道的途中,我又发现一个站点:gitclone

这是一个 GitHub 的缓存加速节点,也大约缓存了 15k 个项目,但是 gitclone 单独做了一个站点,里面可以进行搜索项目,甚至于还可以创建仓库。
gitclone 的 clone 提供了多种方式来 clone

但是搜索到的项目,最终查看还是跳转到 GitHub 相应的页面。
所以其实和 gitee 镜像站都差不多。换汤不换药,问题和之前几个镜像站点差不多,不过你只是要 clone,还是不错的选择。
总结
其实在不用 T 子的情况下,方式无非就两种:
- 修改 hosts,直接访问最快的 CDN 节点,这种方式优势在于原汁原味。
- 通过镜像去访问和 clone,这种方式优势在于 clone 的速度。
个人推荐如果主要浏览为主,还是用上文推荐的工具去生成 hosts 进行配置,毕竟原汁原味,clone 大项目的话,可以考虑以上镜像站点去加速下载。
关注作者
最后把这个开源工具分享给大家,关注「元人部落」公众号,并回复 github 即可获取到这个工具 jar 包。启动后访问 127.0.0.1:8880 端口即可自动生成。
一个坚持做原创的技术科技分享号,希望你能关注我,我每周会出一篇实用的原创技术文章,陪着你一起走,不再害怕。

