前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个 Git clone 加速小技巧

一个 Git clone 加速小技巧

作者头像
HackforFun
发布2020-01-13 15:46:32
4.8K0
发布2020-01-13 15:46:32
举报
文章被收录于专栏:HackforFunHackforFunHackforFun

由于一些不可描述的原因,有时候我们需要通过 git 从一些网站(Github or Kernel.org) clone 代码的时候,速度非常的慢。

如上图所示,我想从 Kernel.org clone 各个 stable 版本的 Linux Kernel,但是这个网速非常的捉急,10 KB/s,整个 Git 仓库大概有 2GB 左右大小,以这个网速不知道要下载到后年马月了。

但是我们还有一种方法来加速这个过程:有那么一群热情而又极富责任感的有志之士,他们在国内搭建了一批稳定高效的镜像网站,比如中科大的 USTC Mirror,清华的 Tuna Mirror,它们镜像了各大知名的开源项目,比如 Linux Kernel、Android、Debian、Ubuntu 以及各种基础开发工具。通过这些网站去下载的话速度非常快。

如果你需要的某个软件版本,这些镜像网站上有的话,那么事情就简单了,你直接通过这些网站去下载就是了。

如果你需要的软件版本和镜像网站上镜像的版本有差异,那也没关系,Git 的代码同步机制可以帮助我们—— Git 从一个仓库同步代码的时候,并不是直接就把这个完整的仓库全部同步下来,而且先确定我们本地的仓库和远端仓库之间的差异,然后只同步差异部分,这样只需要同步很小的数据量!

比如我想 clone Kernel.org 上各个 stable 版本的 Linux Kernel,直接从 Kernel.org 同步的话,网速非常慢,但是我发现清华的 Tuna 镜像上有一个 Linux next 分支 !

任意一个 Linux Kernel 分支仓库都包含有 Linux kernel 的绝大部分代码,所以我只要通过这个快速的 Tuna 镜像把 Linux-next 这个分支下载下来,我就在本地拥有了一个 Linux Kernel 的基础版本,然后我在通过 Kernel.org 去同步 Stable 仓库,就只需要同步很小的数据量了,这样即使慢一点,但是因为数据量小,也用不了多少时间。

  • 先从 Tuna 镜像上下载一个 Linux kernel

可以看到从这个镜像下载内核还是很快的,2 MB /s, 其实中间有时候速度能上到 4~5 MB/s,所以 1.3G 的数据很快就下下来了。

通过 git branch-ar 这个命令,我们可以看到,这个代码仓库只有一个 master 分支,和其他几个分支,并没有各个发布的 stable 版本。

  • 通过 git remode add name url 命令把原来我们要下载的仓库作为远程仓库添加到本地仓库
git remote add upstream https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

name 的名字可以按照自己的喜好随便取,url 就是你想同步的 git 仓库地址。

  • 通过 git fetch name 命令抓取远程仓库。

可以看到现在有了前面从 Tuna 镜像上拉取的基础仓库,这次只需要下载 167MB 的数据即可,虽然网速还是很慢,但是数据量小,这个时间还是可以忍受的。

同步完成后,再用 git branch-ar 命令查看,各个 stable 分支都被同步下来了。

这篇文章以 Kernel.org 的同步为例,给大家介绍了一种 git 下载加速的方法,其实不仅仅是 Kerne.org, 其他任何的 Linux Kernel 版本,或者 git 仓库,只要在国内能找到一个比较快速的镜像网站,都能用类似的方法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HackforFun 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档