Windows 下为 Git 配置代理

0. 问题

重装电脑后重新配置 Git 的时候发现克隆仓库时速度极慢,记录一下几种代理方法。

1. 基本常识

git clone 有两种方式,一是 HTTP(S),另一种是 SSH。形式分别为:

1
2
git clone https://github.com/<username>/<repo>.git
git clone git@github.com/<username>/<repo>.git

另外,Shadowsocks 有两种代理方式,一是基于 HTTP,另一种基于 Socks5。

下面介绍分别为两种 Git 协议设置两种代理协议的方法。

2. 配置方法

2.1 HTTP 方式的 HTTP 代理

1
2
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

1080 改为自己本地代理端口。

2.2 HTTP 方式的 Socks5 代理

1
2
git config --global http.proxy socks5://127.0.0.1:1081
git config --global https.proxy socks5://127.0.0.1:1081

1081 改为自己本地代理端口。

以上两种方式会导致所有的 git 命令都走代理,如果你仅仅想对 GitHub 进行配置,则可以这样配置:

1
2
3
4
5
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 http.https://github.com.proxy https://127.0.0.1:1081
git config --global https.https://github.com.proxy https://127.0.0.1:1081

2.3 SSH 方式的 HTTP 代理

参考 StackOverflow: SSH in git behind proxy on windows 7

2.4 SSH 方式的 Socks5 代理

首先需要使用的 connect.exe 工具已经在 Git 中预置了,可以如下确认:

然后创建 ~/.ssh/config 文件,并添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 这里的 -a none 是 NO-AUTH 模式,参见 https://bitbucket.org/gotoh/connect/wiki/Home 中的 More detail 一节
ProxyCommand connect -S 127.0.0.1:1080 -a none %h %p

Host github.com
User git
Port 22
Hostname github.com
# 注意修改路径为你的路径
IdentityFile "C:\Users\jing1\.ssh\id_rsa"
TCPKeepAlive yes

Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
# 注意修改路径为你的路径
IdentityFile "C:\Users\jing1\.ssh\id_rsa"
TCPKeepAlive yes