10

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

补充另一种情况

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

Vegeta 1.3k
2012-09-18 提问

查看全部 12 个回答

1

根据1L的答案写了一个smart_switcher,可以自动判别并设置各种代理,基于http代理配置,特别适合office有代理、家里无代理各种切换的情况,不过简化到超简单,只需设置你的网关IP和Port即可。
ReadMe在此。。。

smart_switcher

A auto-detect proxy switcher fot http, https, ftp, rsync, ssh, git protocols.


Overview

A smart proxy switcher wrapper, supports http, https, ftp, rsync, ssh(connect depanded), git(connect depanded) protocols. It can automatically detect your network environment and set proxy for you.

If you usually switch the network environment (maybe home with no-proxy and workplace with proxy), it may help you a lot.

Tested in zsh and bash.

Screenshot

screenshot

Install

Simply source it in your .zshrc, or any shell script resource file like this:

source /path/to/smart_switcher.sh

and, make sure set your proxy_server/gateway in smart_switcher.sh.

Usage

Normally, it antomatically executes when you login in.

smart_switcher supports cecho, who will bring some colors for you.

connect is required if proxy is supported in ssh and git. You can install it easily in path /usr/bin/connect.

推荐答案

23

已采纳

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

推广链接