前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub文件下载慢?无法克隆项目?多种方法提升项目下载与克隆体验

GitHub文件下载慢?无法克隆项目?多种方法提升项目下载与克隆体验

原创
作者头像
Mintimate
修改2022-05-26 11:28:26
2.8K0
修改2022-05-26 11:28:26
举报
文章被收录于专栏:Mintimate's BlogMintimate's Blog
头图不能少呀
头图不能少呀

博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享

GitHub,或许是全球最大的代码托管与开源社区了。虽然现在代码托管,可以使用Coding,并且可以和腾讯云服务器很好的有机结合(比如:Coding作为仓库,腾讯云轻量应用服务器作为K8s发布平台,实现自动化部署),但是如果是需要代码开源和社区反馈,往往还是选择GitHub。

前言

尴尬的是,GitHub经常无法访问,比如我的腾讯云轻量应用服务器克隆jenv项目,有时候就会卡在clone:

Lighthouse(大陆)卡在克隆
Lighthouse(大陆)卡在克隆

有时候raw.githubusercontent.com甚至无法解析,不过最近腾讯云都有优化网络,现在已经可以解析了:

可以解析的腾讯云轻量应用服务器(大陆)
可以解析的腾讯云轻量应用服务器(大陆)

所以说,使用腾讯云轻量应用服务器,还是很方便的⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

所以,如果GitHub无法克隆,或者raw.githubusercontent.com无法解析、下载慢怎么办呢?本次文章就教大家如何处理。

(“魔法”上网等,不在本次讨论范围内,只讲解国内网络情况)

本次介绍三种方法,总有一种适合你~~

方法比较

本文提供三种方法:

  • Opt1:CDN镜像解析、反向代理GitHub,使用CDN对GitHub资源进行加速。适用于全场景
  • Opt2:Coding镜像中转,使用Coding对GitHub仓库进行中转,之后才本地克隆Coding上的仓库。适用于需要长期更新支持(比如:Oh-my-zsh更新)使用git进行项目克隆情况,不适用与GitHub Release等文件的下载

一般情况,推荐使用Opt1对文件进行下载和没有后续差异克隆需求的情况,方法最简单。如果后续还要拉取(git pull)则优先选择Opt2。

不管是Opt1还是Opt2,都不适用于推送发布(git push)。

Opt1:CDN加速

不要看到CDN加速,就觉的很??,这里介绍两种免费的方法,其中Cloudflare方法,基于jsdelivr方法而派生(*☻-☻*)。

jsdeliver

jsdeliver相信大家都不陌生了,jsdeliver提供了免费的CDN给大众用户,参考官方的说明:

官方说明:

官方说明
官方说明

我们使用也很简单:

// 加载任何Github发布、提交或分支
https://cdn.jsdelivr.net/gh/user/repo@version/file

举个例子: 我们下载我GitHub里这个文件:

https://github.com/Mintimate/AutoInstallAria2/blob/main/aria2-1.35.0-linux-gnu-32bit-build1.tar.bz2
下载的文件
下载的文件

那么,使用jsdelivr进行加速,文件下载地址就是:

https://cdn.jsdelivr.net/gh/Mintimate/AutoInstallAria2@main/aria2-1.35.0-linux-gnu-32bit-build1.tar.bz2

如果还是不会下载地址的格式,jsdelivr官方也提供了在线转换器:

官方转换器
官方转换器

当然,最近听说jsdelivr在调整,cdn.jsdelivr.net大陆可能无法访问了,可以暂时使用fastly.jsdelivr.net代替。

Cloudflare Worker

其实,我们还可以使用Cloudflare Worker对我们的GitHub进行加速,并且同时支持git clone。原理就是类似Nginx的反向代理。

我搭建了一个Demo:https://tool.mintimate.cn/gh

公共资源,仅供临时使用,如需大范围使用,请看后续操作后自行搭建。

进入Cloudflare Worker首页:https://workers.cloudflare.com

注册,登陆,点击Start building

image.png
image.png

取一个子域名,Create a Worker

最后结果
最后结果

创建一个服务,比如:fast-github

创建服务
创建服务

点击Quick edit快速修改:

快速修改
快速修改

打开:

复制 index.js :

打开index.js
打开index.js

到左侧代码框:

粘贴后
粘贴后

默认配置是:文件下载走jsdelivr,克隆走Fastgit; 如果这两个不能使用,或者需要改为走Worker流量,可以按提示修改。

点击Save and deploy。如果正常,就可以使用了。

举个例子:

  • 我创建的Service为:fast-github
  • 我Worker的自定义域名为:mintimate.workers.dev
  • 我需要克隆的GitHub仓库为:https://github.com/vim/vim

那么,使用我们搭建的这个进行加速,就是:

git clone  https://fast-github.mintimate.workers.dev/gh/https://github.com/vim/vim
重定向效果
重定向效果

如果你出现port 443: Connection timed out,就需要自定义域名绑定到Cloudflare Worker,可以参考后续的高级使用。

Opt2:托管平台中转

你可以使用其他托管平台,先Git clone到其他中转平台,再Git clone到本地。

很多人都推荐过Gitee。这里我就不随波逐流了,使用Coding进行中转。

首先,我们打开Coding,并登录。之后进入项目管理:

项目管理
项目管理

新建一个项目(这里我就不新建了,直接打开YouCompeteMe项目):

新建项目并进入
新建项目并进入

之后,选择代码仓库-导入外部仓库

导入外部仓库
导入外部仓库

粘贴你需要克隆的GitHub仓库地址,并选择是否私有:

选择URL
选择URL
创建GitHub
创建GitHub

创建好后,即可二次克隆到本地:

二次克隆
二次克隆
克隆成功
克隆成功

这样做的好处:

  • 项目会自动同步GitHub仓库
自动同步
自动同步

坏处的话……可能是太麻烦了◡ ヽ(`Д´)ノ ┻━┻

Workers优化

自定义域名

Cloudflare Worker使用的是workers.dev顶级域名下的二级域名,所以如果使用Opt1Cloudflare Workers方法时,如果遇到workers.dev域名污染时,就需要绑定自己的域名。

一般workers.dev不可用时,是直接克隆就是443拒绝了:

443端口拒绝
443端口拒绝

如果要绑定域名很简单,域名接入Cloudflare:

自有域名介入Cloudflare
自有域名介入Cloudflare

之后,随便解析一条数据:

解析
解析

切换到Workers,设置重定向:

设置重定向
设置重定向

举个例子:

  • 我的域名是:demo.com
  • DNS解析出二级域名:gh.demo.com

那么,只要请求https://gh.demo.com/,就相当于请求我们的Workers了:

最后效果
最后效果

相当于Nginx的location内~^的正则匹配。

镜像配置

上文说到,我Fork修改的gh-proxy项目,默认配置是:文件下载走jsdelivr,克隆走Fastgit;

如果需要更改为走Workers流量,只需要修改:

镜像设置
镜像设置
  • 0为关闭:使用Cloudflare流量
  • 1为开启:使用镜像

而使用的镜像,就是下文的

镜像地址
镜像地址

相当于Nginx的proxy_pass

END

哈哈,本次文章到此就结束啦。我个人其实偏向使用Opt1的Cloudflare Worker,配合自定义域名,基本没什么问题。

很多小伙伴说自己有闲置的腾讯云轻量应用服务器香港地区,也想知道怎么反代GitHub。下次有机会和大家介绍Nginx怎么反代吧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 方法比较
  • Opt1:CDN加速
    • jsdeliver
      • Cloudflare Worker
      • Opt2:托管平台中转
      • Workers优化
        • 自定义域名
          • 镜像配置
          • END
          相关产品与服务
          内容分发网络 CDN
          内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档