前提
本文针对自己有 socks/https 代理,但不知道如何给 git 配置的人。
git 协议
git 主要有以下三种协议与服务器通信。
- https
- ssh
- git protocol
各自的代理 socks 配置方法不同,下面分别举例介绍如何配置。
https
https 协议,需要使用 https 代理,在 ~/.gitconfig
如下配置即可:
[http "https://github.com/"]
proxy = https://<host>:<port>/
ssh
ssh 协议与 git 关系不大,是 git 调用 ssh 命令与服务器通信,所以配置在 ~/.ssh/confg
。下面是让 ssh 到 github.com 时,使用 socks 配置:
Host github.com
User git
ProxyCommand /usr/bin/nc -X 5 -x <socks_host>:<socks_port> %h %p
git
git 协议比较特殊,有专门一个配置 core.gitproxy
做代理,但需要额外写一个脚本,才能使用上 socks 代理。
~/.gitconfig
配置如下:
[core]
gitproxy = /path/to/gitproxy for github.com
或执行如下代码:
git config --global core.gitproxy "/path/to/gitproxy for github.com"
gitproxy
脚本例子:
#!/bin/sh
#
# Proxy wrapper for git protocol (9418).
#
# git config --global core.gitproxy "ido gitproxy"
#
exec /usr/bin/nc -X 5 -x <socks_host>:<socks_port> $1 $2
注意
本文配置或脚本中使用的 nc 是 Mac OSX 自带的 BSD nc (netcat) 。Linux 下可以装同版本的 (各发行版安装方法不一致,就不举例了),或者根据你当前所用的 nc 的说明,调整参数达到同样的目的。
参考
- https://gist.github.com/sit/49288