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~