uncategorized

git代理加速克隆.

前言

可能是因为MS接管GitHub的原因,连接MS服务器clone代码比起之前github自己的服务器还要慢,几乎快到 x kb/s, 估计是网络请求出国回国的审查手续过于繁重。现在前后端项目动辄几十上百M, 这种小水管下载速度实在不能等。

这种场景下,代理应该登场了

我之前知晓: 终端需要单独设置代理,才能使得终端命令走代理,而不是本机启动了代理程序就会走代理的

对于git命令,设置代理大致有两种途径

  1. 设置shell代理,基本上支持读取 $http_proxy 这类变量的命令都会跟随代理
  2. 设置git代理(git命令支持为自己配置代理)

shell 代理

很多命令支持读取环境变量 http_proxyhttps_proxy 来作为自己的代理配置
这两个配置在默认的shell环境是不存在的,需要用户手动配置
以shadowsocks用户为例

1
2
3
4
# http 请求代理
export http_proxy='socks5://127.0.0.1:1080'
# https 请求代理
export https_proxy='socks5://127.0.0.1:1080'

有的shadowsocks代理接受的端口不一定是 1080
打开软件信息/配置面板查找自己软件相应的’socks5’端口替换即可
其他非 shadowsocks用户亦同

配置了shell代理后,如curl一类的其他终端命令也会走代理

git 代理

git config 命令可以对git运行环境做配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 只对 git 请求 https://github.com 请求
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
git config --global https.https://github.com.proxy socks5://127.0.0.1:1080

# 关闭配置
git config --global --unset http.https://github.com.proxy
git config --global --unset https.https://github.com.proxy

# git全局配置
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

# 关闭配置
git config --global --unset http.proxy 'socks5://127.0.0.1:1080'
git config --global --unset https.proxy 'socks5://127.0.0.1:1080'

上述第一种配置方法,精确到请求的host, 这样配置可以使得只在请求 https://github.com 的时候使用代理,在访问如内网VCS、国内架设的gitlab、码云等服务的时候不会受代理的速度限制,推荐使用这种方法

git 配置的结果保存在 ~/.gitconfig 下, 如果你清楚这个配置文件的格式的情况下,你需要简单修改端口号或者做一些配置更改,也可以直接编辑这个文件

文件 scope
~/.gitconfig 对应 –global
/etc/gitconfig 对应 –system
/.git/config 对应当前项目生效

ssh clone的额外配置

如果是使用git@github.com/xxxx的克隆形式的话,还需要额外配置~/.ssh/config

1
2
3
4
5
6
7
Host github.com
HostName github.com
User git
# 走 HTTP 代理
# ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=8080
# 走 socks5 代理(如 Shadowsocks)
# ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
Share