我有一些与我一起使用的存储库,在public github.com上,需要工作中的代理服务器。
我在我们的企业github实例中有其他存储库,该库是防火墙后面的,并且在定向我们的代理时会失败。
管理多个代理需求的最佳方法是什么?我可以使用git config --global
以及将http.proxy
和https.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
-您将在浏览器中输入的内容到达那里。
注释
- 代理地址必须为
http://proxy:port
,而不是https://proxy:port
(即http
,而不是https
),对于http.proxy
和https.proxy
。 - 还有其他潜在的解决方案,例如仅设置某些本地存储库的代理人,但不在全球上,或者仅设置给定遥控器的代理(假设您有一个带有2个遥控器的存储库,一个是外部的,另一个是内部的),但我将把这些留给读者确定...