git clone 基于ssh的加速方法

背景:

刚才在使用github时,发现直接下载zip的时候,速度非常快,但是使用git clone时发现速度只有15kb/s左右。这一定是不合理。

想着使用梯子,下载速度一定会有所提升,结果发现速度直接使用全局代理是不能有帮助。

所以花了一些时间研究了以下。

 

预备知识:

首先,git clone有两个种,一种是基于http的(暂把其代号设为A,便于后续分类讨论),另一种是基于ssh的(暂把其代号设为B,便于后续分类讨论)。

使用形式分别为:

  git clone https://github.com/stevenlovegrove/Pangolin.git

  gti clone git@github.com:stevenlovegrove/Pangolin.git  

 

另外,基于shadowsocks的代理,也是有两种方法的,一种是http(暂把其代号设为1,便于后续分类讨论),另一只是socks5(暂把其代号设为2,便于后续分类讨论)的。

如下图我的协议就是socks5的。

 

好的,一切准备就绪,因为现在有两种git协议(A,B),两种代理协议(1,2),所以有四种设置方法。

A1:基于http的git与基于http的代理

好的,一切准备就绪,因为现在有两种git协议(A,B),两种代理协议(1,2),所以有四种设置方法。

git config --global http.proxy "http://127.0.0.1:1080"
git config --global https.proxy "http://127.0.0.1:1080"

A2:基于http的git与基于socks5的代理

git config --global http.proxy "socks5://127.0.0.1:1080"
git config --global https.proxy "socks5://127.0.0.1:1080"

B1:基于ssh的git与基于http的代理

   修改~/.ssh/config文件,如在ubuntu下使用: gedit ~/.ssh/config

 添加如下内容:

Host github.com
HostName github.com
User git
ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=1080

 添加完毕,记得保存

 

B2:基于ssh的git与基于socks5的代理

    修改~/.ssh/config文件,如在ubuntu下使用: gedit ~/.ssh/config

 添加如下内容:

Host github.com
HostName github.com
User git
ProxyCommand nc -v -x 127.0.0.1:1080 %h %p

添加完毕,记得保存

结果对比




Enjoy~

posted @ 2019-10-24 22:14  StevenWind  阅读(5550)  评论(0编辑  收藏  举报