Git自动检测系统代理设置

时间:2015-02-25 21:41:23

标签: git proxy

我经常更换具有不同代理设置的地方,或者只是使用不同的代理从WiFi更改为有线连接。

当我使用OsX时,很容易从网络配置切换到另一个。但是git在 .gitconfig 文件中有自己的设置,我每次都很难修改该文件。

有没有办法将代理(可能是从系统变量?)传递到 .gitconfig 文件,或者有一个设置,如自动检测,< em> system-proxy 或类似的?

2 个答案:

答案 0 :(得分:-1)

根据git-config(1)手册页,git默认情况下已使用标准http_proxy环境变量:

   http.proxy
       Override the HTTP proxy, normally configured using the http_proxy, https_proxy, and all_proxy environment variables (see
       curl(1)). This can be overridden on a per-remote basis; see remote.<name>.proxy

因此,如果您在自己的环境中正确设置http_proxy,则应该全部设置。

更新(针对lingceng)

您可以验证git是否尊重http_proxy环境变量,如下所示:

$ export http_proxy=http://proxy.example.com:3128
$ export GIT_CURL_VERBOSE=1
$ git clone http://git.kernel.org/pub/scm/boot/syslinux/syslinux.git
Cloning into 'syslinux'...
* Couldn't find host git.kernel.org in the .netrc file; using defaults
*   Trying 10.11.5.35...
* Connected to proxy.example.com (10.11.5.35) port 3128 (#0)
> GET http://git.kernel.org/pub/scm/boot/syslinux/syslinux.git/info/refs?service=git-upload-pack HTTP/1.1

您可以在倒数第二行看到git连接到代理,而不是直接连接到git.kernel.org

答案 1 :(得分:-1)

我处于同样的情况,很遗憾Git没有在OS X上使用系统代理设置。为了简化这一点,我创建了一些允许我启用/禁用代理的Bash功能ssh,npm和代理环境变量等工具的配置。

您可以在此处查看代码(作为我的 Bash-it 分叉的一部分):https://github.com/nwinkler/bash-it/blob/master/plugins/available/proxy.plugin.bash

以下是它的工作原理:

  • 我的bash个人资料包含BASH_IT_HTTP_PROXY
  • 等变量
  • 我定义了一些函数,包括enable_proxydisable_proxy,它们在调用时设置或取消设置环境变量。除此之外,他们还会更新我的~/.npmrc文件和其他一些位置。

在办公室工作时(我必须使用代理服务器),我只需致电enable_proxy,在家工作时,我会拨打disable_proxy

一组类似的功能可以作为单个脚本而不是函数实现,但 Bash-it 框架有一个非常好的方法来定义这样的东西。它工作得很好,我从来不必手动控制环境变量。