Git 如何提高 Github 的 pull/push 速度

xiaoronglv for Workstream · September 15, 2020 · Last by lidashuang replied at September 24, 2020 · 6577 hits

本文假设读者有能力并且已经使用酸酸乳来科学上网,就不再赘述如何科学上网这个话题。

很多公司会把代码托管在 Github 的私有仓库上,因为众所周知的原因,在中国大陆 git clone/pull/push 代码时非常慢。终端卡在那里,半天没有任何反应,不知道在干什么;好不容易连上 git 服务器,下载也是龟速。

如果一天提交 15 次代码,就要浪费半个小时的时间。如何提高 git pull/push 的速度呢?

HTTP 形式的仓库地址

对于开源的项目仓库,我们通常大部分并不需要 push 权限,只会 git clone/pull。很多人会选择使用 HTTP 方式来访问仓库地址。

对于 HTTP 形式的仓库地址,可以在终端里输入以下两行命令,为 Git 设置全局的 HTTP 代理,从而提高 git clone/pull 的速度。

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

执行完后 ~/.gitconfig 会多出几行。

[http]
    proxy = http://127.0.0.1:8080
[https]
    proxy = http://127.0.0.1:8080

以后再 pull 代码就会走代理。

但是这种方法对于 [email protected]:my_name/repo.git 这种仓库地址并没有效果,因为它走的是 SSH。

SSH 形式的仓库地址

公司的私有仓库,大部分开发者会上传公钥到 Github, 使用 SSH 形式的仓库地址,避免 git push 时一次次输入密码。

对于这种仓库,我们可以在 ~/.ssh/config 设置代理,提高 git pull/push 的速度。

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

我选了一个比较大的开源项目的仓库做测试,以下是对比图:

参考资料

  1. Github 中国加速访问
  2. macOS 给 Git(Github) 设置代理(HTTP/SSH)

原文地址:

https://mednoter.com/slowness-of-github.html

用路由器科学上网可以更方便,避免手机电脑电视盒子都要配置一次的问题,也能让那些不使用系统代理配置的应用通过代理访问。

对于开发需要系统层面的代理,http 或者 socks 都不够,例如 ssh 的时候,git 的时候等等,这个使用 mellow 在本机提供虚拟网卡 + 默认路由 来调整网络出口就好。上层任何应用直接正常使用就是,无需控制代理。

@wppurking @lidashuang

今天我买了 Surge 3,用了虚拟网卡的模式,再也不用一个个的给每个 App 设置代理了,也不需要设置 HTTP Proxy 了。节省了大量时间,以后可以专心搬砖了。

真的是太好用了,赞赞赞。

换 gitee,秒 pull,虽然有些地方不够好用。

免费的 clash,用着感觉也不错

Reply to xiaoronglv

如果有闲置 mac,也可以试试 surge 的网关模式 https://zouying.life/2020/02/11/home-networking/

You need to Sign in before reply, if you don't have an account, please Sign up first.