How to temporarily disable git http proxy

此生再无相见时 提交于 2019-11-27 13:14:47
VonC

I always set:

no_proxy=.mycompany

(export if I am on Unix, or a simple set on Windows)

It is enough to bypass the proxy for all intranet url ending with ".mycompany".

See for an example:

I use it in my own project: .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

What I like to do is set two Git aliases:

~/.gitconfig

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

Note that I didn't use config --global --unset http.proxy to reset the proxy because that leaves behind the [http] section heading, so after repeatedly enabling and disabling the proxy your .gitconfig will be polluted with a bunch of empty [http] section headings. No big deal, but it's just annoying.


In some cases, such as behind corporate firewalls, you need to configure ~/.ssh/config instead. The setup becomes slightly more complicated:

~/.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

You can even combine the two methods by changing the aliases to this:

[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'

Now I can simply type git noproxy to disable the proxy and git proxy to enable it. You can even switch among multiple proxies by creating more aliases.

bimalmampatta

In my case, I was able to disable git clone requests going through the proxy in my corporate setting by executing

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

As per the git documentation, this disables all requests to that remote repo named origin.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!