How to temporarily disable git http proxy

后端 未结 3 956
北恋
北恋 2020-12-03 01:10

I am using git behind a corporate firewall, and I am successfully cloning external projects by using the http.proxy --global config.

My problem arises when I want to

相关标签:
3条回答
  • 2020-12-03 02:05

    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:

    • "Can't update/install using composer behind a corporate firewall"
    • "Only use a proxy for certain git urls/domains?"
    • "Cannot do git-svn fetch behind proxy"

    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
    
    0 讨论(0)
  • 2020-12-03 02:05

    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.

    0 讨论(0)
  • 2020-12-03 02:05

    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.

    0 讨论(0)
提交回复
热议问题