我在公共网站www.example.com上使用了一些回购协议github.com,需要从工作中使用代理服务器。
我在我们的企业Github示例中有其他回购协议,这些协议在防火墙后面,当定向到我们的代理时会失败。
管理多个代理的最佳方式是什么?我可以使用git config --global
,沿着设置http.proxy
和https.proxy
密钥到代理来连接github.com repos,但随后Enterprise Github被破坏,我必须清除这些密钥才能让它重新工作。
如何管理这两个需要不同代理设置的源而不手动更改代理?每次切换项目时是否都要使用脚本?
2条答案
按热度按时间5sxhfpxr1#
正如我在“Only use a proxy for certain git urls/domains?“中所解释的,您可以只为
github.com
设置代理。但是对于您的情况,我将坚持使用经典的
HTTP(S)_PROXY
环境变量(不需要git config
命令)只需添加一个
NO_PROXY
环境变量,其中包含您的私有Git托管服务器的域,Git就不会在从该私有服务器克隆/推送/拉取时使用代理。icnyk63a2#
从the link VonC gave to this question开始,我就能够将正确的命令组合在一起来完成这个任务,但是这些答案非常复杂(有时候很难理解正确的语法),所以我想在这里为后代总结一下我的答案:
溶液1:仅将代理应用于外部站点
One solution is to setup only github.com for the proxy with:
这看起来有点奇怪,因为你把
https://github.com
嵌入到了普通的http.proxy
语句的中间,这就是你创建一个连接到特定站点的代理的方法。溶液2:将代理应用于所有站点,但删除内部站点的代理
或者,您可以为所有站点配置代理,然后只删除内部Github站点的代理:
这会将代理应用于所有内容,然后执行以下操作来告诉Git不要为您的内部Git站点使用代理:
其中
<Git Site URL>
是完全限定的域名,例如http://github.mycompany.com
-您在浏览器中键入的内容。注解
1.* * 对于
http.proxy
和https.proxy
,代理地址必须是http://proxy:port
,而不是https://proxy:port
(即只能是http
,不能是https
)**。1.还有其他可能的解决方案,比如只为某些本地存储库设置代理,而不是全局设置,或者只为给定的远程存储库设置代理(假设您有一个具有2个远程存储库的存储库,一个是外部的,另一个是内部的),但我将把这些留给读者来确定......