8

最近从 Bitbucket经常访问不了,Github拖代码的速度也抽风,什么原因大家都知道。
所以,最好的方法就是给Git设置代理了,我希望能指定部分仓库走代理方式,不知该如何设置?

补充另一种情况

本地环境下,本人设置了ssh代理,通过SOCKS走127.0.0.1:7070实现,如果在本地ssh代理开启的情况下,是不是又有另外的方法?

Vegeta 1.3k
2012-09-18 提问

查看全部 12 个回答

2

github ssh proxy | github ssh 协议代理配置

配置一个 proxy-wrapper 脚本

bash
cat > $HOME/bin/proxy-wrapper
#!/bin/bash
nc -x127.0.0.1:7080 -X5 $*

给它增加一个可执行权限

bash
$ chmod +x $HOME/bin/proxy-wrapper

配置 .ssh/config , 对 github.com 设置一个代理命令

bash
Host github github.com
    Hostname github.com
    User git
    ProxyCommand $HOME/bin/proxy-wrapper '%h %p'

必须全部走ssh协议

bash
$ git clone git@github.com:jjrdn/node-open.git

git 协议请参考 [Using GIT through a SOCKS proxy](http://twopenguins.org/tips/git-throu...).

参考

  1. [如何为 Git 设置代理?](http://segmentfault.com/q/10100000001...)
  2. [Using GIT through a SOCKS proxy](http://twopenguins.org/tips/git-throu...)
  3. [免费的ssh](http://milnk.com/link/10645)

推荐答案

22

已采纳

Git 目前支持的三种协议 git://ssh://http://,其代理配置各不相同:core.gitproxy 用于 git:// 协议,http.proxy 用于 http:// 协议,ssh:// 协议的代理需要配置 ssh 的 ProxyCommand 参数。

对于所有的协议全部使用 SSH 隧道进行代理

GIT 协议的配置

建立 /path/to/socks5proxywrapper 文件,使用 https://bitbucket.org/gotoh/connect 工具进行代理的转换,各发行版一般打包为 proxy-connect 或者 connect-proxy。

#!/bin/sh
connect -S 127.0.0.1:7070 "$@"

配置 git

[core]
        gitproxy = /path/to/socks5proxywrapper

或者

export GIT_PROXY_COMMAND="/path/to/socks5proxywrapper"

SSH 协议的配置

建立 /path/to/soks5proxyssh 文件

#!/bin/sh
ssh -o ProxyCommand="/path/to/socks5proxywrapper %h %p" "$@"

配置 git 使用该 wrapper

export GIT_SSH="/path/to/socks5proxyssh“

当然也可以直接配置 ~/.ssh/configProxyCommand

HTTP 协议的配置

[http]
        #这里是因为 Git 使用 libcurl 提供 http 支持
        proxy = socks5://127.0.0.1:7070

所有协议全部使用 http 代理

在前一部分的基础上, /path/to/socks5proxywrapper 文件改为

#!/bin/sh
connect -H 192.168.1.100:8080 "$@"

HTTP 协议配置

[http]
    proxy = http://192.168.1.100:8080

针对域名启用代理

gitproxy 参数提供 * for * 结构,具体看 man git-config 的 core.gitproxy 部分。

推广链接