仅用于某些git的网址/域名代理?仅用于某些git的网址/域名代理?(Only use a prox

2019-05-08 14:49发布

是否有可能混帐配置为使用代理服务器只对特定的领域?

我想使用我们公司的代理来访问Github上,但离开它关闭访问我们自己内部的git回购。

我使用的亭子,它需要的项目需要我们两个防火墙内和在GitHub上,所以我不能这样做,因为每个项目的设置。 它需要某种全局配置选项。 有什么想法吗?

Answer 1:

我通常使用的环境变量:

  • http_proxy=http://username:password@proxydomain:port
  • https_proxy=http://username:password@proxydomain:port

这是混帐访问GitHub库时捞起。

注意:

  • http_proxyhttps_proxy必须使用http:// URL代理(无https:// )。
  • 始终使用FQN(完全合格的名称)的proxydomain (不依赖于它的简称)

但对于内部回购,所有我需要做的就是定义和出口多了一个环境变量:

  • no_proxy=.my.company,localhost,127.0.0.1,::1 ,用于访问任何与回购如地址myrepo.my.company或本地主机。

您可以定义NO_PROXYno_proxy ,不要紧。

但是为了以防万一,我总是设置HTTP_PROXYHTTPS_PROXYhttp_proxyhttps_proxyNO_PROXYno_proxy



Answer 2:

要添加另一种可能性,你可以定义通过代理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,以下列顺序的:

  • 方案 (例如, httpshttps://example.com/ )。
  • 主机/域名 (例如, example.comhttps://example.com/ )。
  • 端口号 (如8080http://example.com:8080/ )。
  • 路径 (例如, repo.githttps://example.com/repo.git )。
  • 用户名 (例如, userhttps://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 +。



Answer 3:

如一些人所讲到这里,你可以通过使用代理服务器设置沿指定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 = ""


Answer 4:

您可以为每个调整各种配置选项远程明确。 比方说,我们有2个遥控器,命名originupstream分别。 您调整各做以下代理:

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


Answer 5:

在Windows上,只需[注意没有密码]以下为我工作

git config --global http.proxy http://mydomain\\myusername:@myproxyserver:proxyport

git config --global https.proxy http://mydomain\\myusername:@myproxyserver:proxyport


文章来源: Only use a proxy for certain git urls/domains?
标签: git github proxy