【问题标题】:How to temporarily disable git http proxy如何暂时禁用 git http 代理
【发布时间】:2013-10-31 16:18:33
【问题描述】:

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

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

我知道我可以在使用 Intranet 之前重置配置,但这对用户不太友好。

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

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

【问题讨论】:

    标签: git http-proxy


    【解决方案1】:

    在我的例子中,我能够通过执行在我的公司设置中禁用通过代理的 git clone 请求

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

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

    【讨论】:

      【解决方案2】:

      我喜欢做的是设置两个 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 将被一堆空的@987654325 污染@ 部分标题。没什么大不了的,只是很烦人。


      在某些情况下,例如在公司防火墙后面,您需要改为配置 ~/.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 来启用它。您甚至可以通过创建更多别名在多个代理之间切换。

      【讨论】:

        【解决方案3】:

        我总是设置:

        no_proxy=.mycompany
        

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

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

        参见示例:

        我在自己的项目中使用它:.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
        

        【讨论】:

        • 我希望我能多次投票!我花了几天时间试图弄清楚这该死的东西!谢谢你!
        猜你喜欢
        • 1970-01-01
        • 2011-07-03
        • 2015-12-15
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        • 2015-02-24
        • 2011-06-13
        相关资源
        最近更新 更多