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

头图不能少呀

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

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

前言

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

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

取一个子域名,Create a Worker

最后结果

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

创建服务

点击Quick edit快速修改:

快速修改

打开:

复制 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

创建GitHub

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

二次克隆

克隆成功

这样做的好处:

  • 项目会自动同步GitHub仓库

自动同步

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

Workers优化

自定义域名

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

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

443端口拒绝

如果要绑定域名很简单,域名接入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怎么反代吧。

原文地址:https://cloud.tencent.com/developer/article/2010898

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340