如何设置git以使用需要不同代理的遥控器?

时间:2017-09-06 23:13:02

标签: git proxy

我有一些我在公共github.com工作的回购,需要代理服务器。

我在防火墙后面的Enterprise Github实例中有其他存储库,并且在定向到我们的代理时会失败。

管理多个代理需求的最佳方法是什么?我可以使用git config --global并将http.proxyhttps.proxy密钥设置为代理以获取github.com repos连接,但是然后Enterprise Github被破坏了,我必须清除这些密钥才能获得它再次运作。

如何在不手动更改代理的情况下管理需要不同代理设置的这两个来源?我每次切换项目时都会使用脚本吗?

2 个答案:

答案 0 :(得分:1)

正如我在“Only use a proxy for certain git urls/domains?”中解释的那样 ,您可以仅为github.com设置代理。

但在你的情况下,我会坚持使用经典的HTTP(S)_PROXY环境变量(不需要git config命令)

只需在您的私有Git托管服务器的域中添加NO_PROXY环境变量,当从所述私有服务器克隆/推送/拉出时,Git将不会使用该代理。

set NO_PROXY=.myserver.org

答案 1 :(得分:1)

the link VonC gave to this question开始,我能够将正确的命令组合在一起,但这些答案非常复杂(有时难以理解正确的语法),所以我想我会在这里巩固我的答案后人:

解决方案1:仅将代理应用于外部站点

一种解决方案是仅为代理设置github.com:

> git config --global http.https://github.com.proxy http://[user:pass@]<proxy URL>:<port>
> git config --global https.https://github.com.proxy http://[user:pass@]<proxy URL>:<port>

这看起来有点时髦,因为您将https://github.com嵌入正常http.proxy语句的中间。这是您创建附加到特定站点的代理的方式。

解决方案2:将代理应用于所有,但删除内部网站

或者,您可以为所有站点配置代理,然后仅为您的内部Github站点删除代理:

> git config --global http.proxy http://[user:pass@]<proxy URL>:<port>
> git config --global https.proxy http://[user:pass@]<proxy URL>:<port>

这会将代理应用于所有内容,然后执行以下操作以告知Git不要为您的内部Git站点使用代理:

> git config --global http.<Git Site URL>.proxy ""
> git config --global https.<Git Site URL>.proxy ""

完全限定的域名在哪里,例如http://github.mycompany.com - 您要在浏览器中键入的内容。

备注

  1. 请注意,对于所有这些, http://proxy:porthttps://proxy:port的代理地址必须为http.proxy,而非https.proxy
  2. 还有其他可能的解决方案,例如仅为某些本地存储设置代理,但不是全局设置,或者只为给定的远程设置代理(比如你有一个带有2个遥控器的仓库,一个是外部的,另一个是内部的),但我会留给读者来确定......