如何暂时禁用git http代理

时间:2013-10-22 16:55:34

标签: git http-proxy

我在公司防火墙后面使用git,并且我使用http.proxy --global config成功克隆了外部项目。

当我想在Intranet上通过http克隆时,我的问题出现了。我怀疑代理配置会干扰内部网请求。

我知道我可以在使用内部网之前重置配置,但这不是非常用户友好。

我也看到了这个answer,但它似乎只适用于现有的存储库。

有没有办法只为一个命令调用停用代理使用?在这种情况下,初始克隆?

3 个答案:

答案 0 :(得分:32)

我总是设置:

no_proxy=.mycompany

export如果我在Unix上,或者在Windows上使用简单的set

绕过以“.mycompany”结尾的所有Intranet网址的代理就足够了。

参见示例:

我在自己的项目中使用它:.proxy.example

export http_proxy=http://username:userpassword@server.company:port
export https_proxy=http://username:userpassword@server.company:port
export no_proxy=.company localhost

答案 1 :(得分:13)

我喜欢做的是设置两个Git别名:

<强>〜/的.gitconfig

[alias]
        noproxy = config --global --remove-section http
        proxy = config --global http.proxy http://127.0.0.1:9666

请注意,我没有使用config --global --unset http.proxy来重置代理,因为这会留下[http]部分标题,因此在重复启用和停用代理后,您的.gitconfig将会是被一堆空的[http]部分标题污染了。没什么大不了的,但这只是烦人的。

在某些情况下,例如企业防火墙后面,您需要配置~/.ssh/config。设置变得稍微复杂一些:

<强>〜/的.gitconfig

[alias]
        noproxy = !sh -c 'cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'cp ~/.ssh/config.proxy ~/.ssh/config'

<强>的〜/ .ssh / config.noproxy

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

<强>的〜/ .ssh / config.proxy

Host *
  ProxyCommand connect -H 127.0.0.1:9666 %h %p

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

您甚至可以通过将别名更改为此来组合这两种方法:

[alias]
        noproxy = !sh -c 'git config --global --remove-section http 2> /dev/null && cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'git config --global http.proxy http://127.0.0.1:9666 && cp ~/.ssh/config.proxy ~/.ssh/config'

现在我只需输入git noproxy即可停用代理,git proxy可启用它。您甚至可以通过创建更多别名来切换多个代理。

答案 2 :(得分:1)

在我的情况下,我可以通过执行企业设置来禁用通过代理的git clone请求

git config --global --add remote.origin.proxy ""

根据git文档,这会禁用对名为origin的远程回购的所有请求。