Windows 下 git 设置代理服务器
SVN 中,使用 TortoiseSVN 来进行版本控制时,设置代理非常简单,只需要在设置里面添加代理的信息即可。而 git
在 GUI(v0.17.GITGUI)中却无法找到类似的设置,只能求助 git bash
来设置。
Git 支持四种协议 1 ,而除本地传输外,还有:git://, , 基于 HTTP 协议,这些协议又被分为哑协议(HTTP 协议)和智能传输协议。对于这些协议,要使用代理的设置也有些差异:
- 使用
git协议
时,设置代理需要配置core.gitproxy
- 使用
HTTP协议
时,设置代理需要配置http.proxy
- 而是用
ssh协议
时,代理需要配置 ssh 的ProxyCommand
参数
由于个人需求仅仅是 HTTP 的代理(相对来说,HTTP 有比较好的通适性,Windows 配置 git/ssh 比较棘手),设置的时候,只需要针对单个设置 http.proxy
即可,在需要使用代理的项目下面使用 git bash
如下命令进行设置 ——你的 Uri 和 port 可能和我的不同,你懂的。:
git config http.proxy http://127.0.0.1:8088 # 也可以是 uri:port 形式
这个是不需要鉴权的代理设置,如果需要鉴权,可能需要添加用户名密码信息:
git config http.proxy http://username:password@127.0.0.1:8088
如果 git 的所有项目都需要启用代理,那么可以直接启用全局设置:
git config --global http.proxy http://127.0.0.1:8088
为了确认是否已经设置成功,可以使用 --get
来获取:
git config --get --global http.proxy
这样可以看到你设置在 global 的 http.proxy
值。
需要修改的时候,再次按照上面的方法设置即可,git 默认会覆盖原有的配置值。
当我们的网络出现变更时,可能需要删除掉原有的代理配置,此时需要使用 --unset
来进行配置:
git config --global --unset http.proxy
在命令之后,指定位置的设置值将会被清空,你可以再次使用 --get
来查看具体的设置情况。
如果使用了 HTTPS,肯呢个会碰到 HTTPS 证书错误的情况,比如提示: SSL certificate problem
。。。,此时,可以尝试将 sslVerify
设置为 false
:
git config --global http.sslVerify false
恩,到此,可以试试 git 来获取/更改项目了,此时,项目应该是使用代理来进行通讯的。
后记:
-
如果非必要,一般不使用
--global
的方式来设置代理,毕竟代理有的时候访问一些项目比直接访问还慢,特别是当代理在国外,项目源在国内的时候,按需使用才是王道。 -
不要多次使用不同的参数来设置代理,一般使用文中两种方式酌情选用即可,
--global
,--system
,--local
各级设置后,可能会给自己带来不必要的麻烦。git 默认是先到 git Repository 的配置文件中查找配置文件,如果没有才会到--global
设置的文件中查找,因此,单个项目文件中的设置会覆盖--global
的设置。 -
使用
--global
来配置的信息保存在当前用户的根目录下的.config
文件中,而仓库中的配置保存在项目仓库的根目录下的.git/config
文件中。 -
如果是 Linux 的用户,再使用
git/ssh协议
时,根据网上的说法,需要使用 connect工具来做代理的转换。—— 本人 Linux 下的暂时没有配置 git 使用代理,暂时无法验证,摘录方法如下:
GIT 协议配置:安装完毕
connect
之后,你可以在特定的目录中建立一个socks5_proxy_wrapper
(或其他的文件名亦可),然后文件内容改为:#!/bin/sh
connect -S 127.0.0.1:8088 "$@"而后即可以配置 git 了,设置
gitproxy
:git config core.gitproxy /path/to/socks5_proxy_wrapper
路径要改
抑或
export GIT_PROXY_COMMAND
:export GIT_PROXY_COMMAND="/path/to/socks5_proxy_wrapper"
SSH 协议配置,同样需要建立一个文件,假设命名为:
socks5_proxy_ssh
,文件内容为:#!/bin/sh
ssh -o ProxyCommand="/path/to/socks5_proxy_wrapper %h %p" "$@"配置 git 使用该文件:
export GIT_SSH="/path/to/socks5_proxy_ssh"
亦可配置"
~/.ssh/config
"中的ProxyCommand
。HTTP 协议配置,这里直接使用
http.proxy
设置成socks5
即可:git config http.proxy
如果要全部使用 HTTP 代理,可以将上面的
socks5_proxy_wrapper
文件设置为:#!/bin/sh
connect -H 192.168.1.100:8080 "$@"其他保持不变即可。而
http.proxy
设置同本文设置即可.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于