如何为 Git 设置代理?

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

补充另一种情况

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

阅读 162.5k
评论
    13 个回答

    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 部分。

    评论 赞赏