是否有可能混帐配置为使用代理服务器只对特定的领域?
我想使用我们公司的代理来访问Github上,但离开它关闭访问我们自己内部的git回购。
我使用的亭子,它需要的项目需要我们两个防火墙内和在GitHub上,所以我不能这样做,因为每个项目的设置。 它需要某种全局配置选项。 有什么想法吗?
是否有可能混帐配置为使用代理服务器只对特定的领域?
我想使用我们公司的代理来访问Github上,但离开它关闭访问我们自己内部的git回购。
我使用的亭子,它需要的项目需要我们两个防火墙内和在GitHub上,所以我不能这样做,因为每个项目的设置。 它需要某种全局配置选项。 有什么想法吗?
我通常使用的环境变量:
http_proxy=http://username:password@proxydomain:port
https_proxy=http://username:password@proxydomain:port
这是混帐访问GitHub库时捞起。
注意:
http_proxy
和https_proxy
必须使用http://
URL代理(无https://
)。 proxydomain
(不依赖于它的简称) 但对于内部回购,所有我需要做的就是定义和出口多了一个环境变量:
no_proxy=.my.company,localhost,127.0.0.1,::1
,用于访问任何与回购如地址myrepo.my.company
或本地主机。 您可以定义NO_PROXY
或no_proxy
,不要紧。
但是为了以防万一,我总是设置HTTP_PROXY
, HTTPS_PROXY
, http_proxy
, https_proxy
, NO_PROXY
和no_proxy
。
要添加另一种可能性,你可以定义通过代理git config http.proxy
。
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:proxyport
但是,什么是真正的整洁是, 开始git1.8.5(2013年10月) ,你可以通过URL设置HTTP设置 。
在“ http.*
”变量现在可以按照配置应用于的URL指定 。
例如,
[http]
sslVerify = true
[http "https://weak.example.com/"]
sslVerify = false
将翻转
http.sslVerify
谈论到指定的站点,只有当断。
见提交d4770964d5 :
$ git config --bool --get-urlmatch http.sslVerify https://good.example.com
true
$ git config --bool --get-urlmatch http.sslVerify https://weak.example.com
false
由于只有
<section>
规定,你可以在所有适用于给定的URL及其值部分的所有变量的列表。 例如
$ git config --get-urlmatch http https://weak.example.com
http.sslverify false
所有的细节都在犯6a56993b :
http.<url>.*::
任何在HTTP的。*以上选项可以选择性地应用于一些网址。
对于一个配置键匹配的URL,所述配置密钥的每个元素进行比较,该URL,以下列顺序的:
https
在https://example.com/
)。 example.com
在https://example.com/
)。 8080
中http://example.com:8080/
)。 repo.git
在https://example.com/repo.git
)。 user
在https://user@example.com/repo.git
) 上面的列表是通过降低优先级排序; 匹配一个配置关键的路径的URL最好一个匹配的用户名。
例如,如果URL是https://user@example.com/foo/bar
的一个配置密钥匹配https://example.com/foo
将优于的一个配置关键匹配https://user@example.com
。所有URL尝试任何匹配之前标准化(密码部分,如果嵌入在URL中,总是被忽略进行匹配),使得只是拼写不同相当于网址可以正确匹配。
环境变量设置始终覆盖任何比赛 。
所针对匹配的URL是那些直接给予GIT中的命令。
这意味着作为访问重定向不参与匹配的结果的任何URL +。
如一些人所讲到这里,你可以通过使用代理服务器设置沿指定URL做到这一点,但这里有一个固定的这对我的使用情况。 由于上述VonC!
注意下面是我指定的Git服务器的根目录。 你已经克隆了混帐回购协议的完整路径不是必需的。 您可以使用一个单一的入口,以让整个服务器的照顾。
以下添加到您的.gitconfig文件。 在我的Windows系统中,我使用的是%USERPROFILE%\。gitconfig
[http]
proxy = http://my.proxy.net:8080
[https]
proxy = http://my.proxy.net:8443
[http "http://my.internalgitserver.com/"]
proxy = ""
您可以为每个调整各种配置选项远程明确。 比方说,我们有2个遥控器,命名origin
和upstream
分别。 您调整各做以下代理:
git config --path remote.origin.proxy http://user:pass@proxy_for_origin:8080
git config --path remote.upstream.proxy http://user:pass@proxy_for_upstream:8080
这将改变你的本地仓库配置(内部的每个远程的部分.git/config
)。
如果你愿意,你还可以调整全局配置选项。 因为它没有意义在全局配置文件(引用远程名称$HOME/.gitconfig
),您可以使用URL匹配 (IIRC,因为Git的1.8.5支持)。 例:
[http "https://example.com/repo1.git"]
proxy = http://user:pass@proxy1:8080
[http "https://example.com/repo2.git"]
proxy = http://user:pass@proxy2:8080
如果你想看看有什么设置:
git config --path --get-urlmatch https://example.com/repo1.git
git config --path --get-urlmatch https://example.com/repo2.git
在Windows上,只需[注意没有密码]以下为我工作
git config --global http.proxy http://mydomain\\myusername:@myproxyserver:proxyport
git config --global https.proxy http://mydomain\\myusername:@myproxyserver:proxyport