为 Git 添加代理

Proxy for Git

Posted by J Leaves on December 8, 2020

在某些网络环境下,如果直接使用 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)