如何设置git与需要不同代理的遥控器一起工作



我有一些与我一起使用的存储库,在public github.com上,需要工作中的代理服务器。

我在我们的企业github实例中有其他存储库,该库是防火墙后面的,并且在定向我们的代理时会失败。

管理多个代理需求的最佳方法是什么?我可以使用git config --global以及将http.proxyhttps.proxy键设置为代理以获取GitHub.com repos连接的连接,但是企业GitHub被打破了,我必须清除这些键以再次工作。

>

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

正如我在"仅对某些git URL/域使用代理?"所解释的那样?,您可以为github.com设置代理。

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

只需在私有git托管服务器的域中添加一个NO_PROXY环境变量,而Git在克隆/推送/从上述专用服务器上拉动时不会使用代理。

set NO_PROXY=.myserver.org

vonc给出了这个问题的链接,我能够将正确的命令组合在一起以完成此操作,但是这些答案非常复杂(有时难以理解正确的语法),所以我想我会在这里巩固我的答案以确保后代:


解决方案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 ""

其中<Git Site URL>是完全合格的域名,例如http://github.mycompany.com-您将在浏览器中输入的内容到达那里。


注释

  1. 代理地址必须为http://proxy:port,而不是https://proxy:port(即http,而不是https,对于http.proxyhttps.proxy
  2. 还有其他潜在的解决方案,例如仅设置某些本地存储库的代理人,但不在全球上,或者仅设置给定遥控器的代理(假设您有一个带有2个遥控器的存储库,一个是外部的,另一个是内部的),但我将把这些留给读者确定...

最新更新