公司内网 git 访问外网需要设置代理,而一般网上给出的设置方法是 git config –global http.proxy 192.168.4.12:8080。

确实可以起作用,然而,上面的命令中,有一个 –global,可以猜测到这个是一个全局配置,对所有的提交行为都生效。那如何对单个项目配置生效呢?

摸索了一下,发现 git 提供了一个 config 命令,运行之,可以看到这些信息:

看 Config file location 那一项,有 global, system, local, blob 这几个值。后面的解释说的很清楚:

global 即是读/写当前用户全局的配置文件(~/.gitconfig 文件,属于某个计算机用户)

system 即是读写系统全局的配置文件(/etc/gitconfig 文件,属于计算机)

local 即是当前 clone 仓库 的配置文件(位于 clone 仓库下 .git/config)。

blob 配置是另外一种形式,提供一个 blob 大对象格式,没有验证过,估计与 local 是一样的,只是形式不同。

上面各种配置应该需要充分考虑含义。

比如,有些是从 github 远程仓库的 clone, 有些是公司内网仓库的 clone,前者需要配置网络代理才能拉取,提交代码,后者不能配置网络代理。那我们的操作就是

只对 github 的 clone 仓库配置:进入 github clone 仓库,运行 git config –local http.proxy 192.168.4.12:8080

之后就可以看到 .git/config 文件中多了最下面两行

[http]
proxy = 10.xx.xx.xx:8080

这也意味着,我们直接按上面改这个配置文件也能达到同样的目的。