如何为 Git 设置代理?
假设代理是本地的,协议是 socks5,端口是 1080 。根据 git 使用的协议:http 、 ssh、 git,代理配置的方法各有不同。
HTTP 协议
使用 git 的配置 http.config
git config http.config socks5://127.0.0.1:1080
也可以使用环境变量
export HTTPS_PROXY=socks5://127.0.0.1:1080
git 的配置可以是全局的,也可以根据不同的仓库进行配置,环境变量只能全局使用,否则就需要在每次使用 git 的时候用 env :
env HTTPS_PROXY=socks5://127.0.0.1:1080 git pull
如果需要根据不同的 remote 使用不同的代理,可以使用 remote.<name>.proxy
SSH 协议
修改 ssh 的配置文件 .ssh/config
Host bitbucket.org
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
这样链接到 bitbucket.org 的 ssh 都会使用 socks5://127.0.0.1:1080 的代理,ssh 的配置可以参考 man ssh_config
,nc 命令的使用可以参考 man nc
。
SSH 协议的代理可以是全局的(去掉 Host 那行就行了),也可以针对某个网站,但不能针对某个仓库配置。
GIT 协议
给 GIT 协议配置代理需要写一个脚本,比如脚本的名字叫: git_proxy
#!/bin/sh
nc -X 5 -x 127.0.0.1:1080 "$@"
然后使用 core.gitproxy 进行配置:
git config core.gitproxy /path/to/git_proxy
它可以配成全局的,也可以配成各个仓库自己的,还可以使用:
git config core.gitproxy '/path/to/git_proxy for bitbucket.org'
配置成针对 bitbucket.org 这个网站的。