在某些网络环境下,如果直接使用 Git 连接到 GitHub,会发现速度非常慢。如何为 Git 设置代理呢?
Git 目前支持的三种协议 git://
、ssh://
和 http://
,其代理配置各不相同:core.gitproxy
用于 git://
协议,http.proxy
用于 http://
协议,ssh://
协议的代理需要配置 ssh 的 ProxyCommand
参数。
分辨 Git 使用的协议
-
HTTP 协议:
git clone https://github.com/owner/git.git
-
SSH 协议:
git clone git@github.com:owner/git.git
git clone ssh://git@github.com:owner/git.git
分辨你使用的代理
一般来说,你使用的代理软件会给出。
HTTP 协议下的代理
走 HTTP 代理
1
2
git config --global http.proxy "http://127.0.0.1:10809"
git config --global https.proxy "http://127.0.0.1:10809"
走 socks5 代理(如 Shadowsocks)
1
2
git config --global http.proxy "socks5://127.0.0.1:10809"
git config --global https.proxy "socks5://127.0.0.1:108099"
取消设置
1
2
git config --global --unset http.proxy
git config --global --unset https.proxy
SSH 协议下的代理
修改 ~/.ssh/config
文件(不存在则新建):
1
2
3
4
5
6
7
8
# 必须是 github.com
Host github.com
HostName github.com
User git
# 走 HTTP 代理
# ProxyCommand connect -H 127.0.0.1:10809 %h %p
# 走 socks5 代理
# ProxyCommand connect -S 127.0.0.1:10808 %h %p
注意:
linux下是 ProxyCommand nc -x 127.0.0.1:1080 %h %p,然而对windows下的git bash是不管用的(没有自带nc、ncat等程序)。git bash必须得用connect:
1
2
ProxyCommand connect -H 127.0.0.1:10809 %h %p
ProxyCommand connect -S 127.0.0.1:10808 %h %p
参考:
macOS 给 Git(Github) 设置代理(HTTP/SSH)