git ssh 设置代理服务器_Windows下git使用代理服务器的设置方法

本文详细介绍了如何在Git中设置代理,包括在Git Bash中配置HTTP和SSH协议的代理,以及在Windows环境下使用TortoiseSVN与Git的代理差异。通过设置http.proxy和ssh的ProxyCommand参数,确保Git通过代理正常工作。同时,文章提到了在Linux环境中使用git/ssh协议时可能需要的额外代理配置步骤,并提供了相应的脚本示例。
摘要由CSDN通过智能技术生成

SVN中,使用TortoiseSVN来进行版本控制时,设置代理非常简单,只需要在设置里面添加代理的信息即可。而git在GUI(v0.17.GITGUI)中却无法找到类似的设置,只能求助git bash来设置。

Git支持四种协议1,而除本地传输外,还有:git://, ssh://, 基于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 socks5://127.0.0.1:8088

如果要全部使用HTTP代理,可以将上面的socks5_proxy_wrapper文件设置为:

#!/bin/sh connect -H 192.168.1.100:8080 "$@"

其他保持不变即可。而http.proxy设置同本文设置即可.

参考:

git文档中指明服务器上的Git协议有:Local, HTTP, Secure Shell(SSH) and Git.

使用git config --help查看设置帮助

Linux配置一节是来自segmentfault,权利归作者所有,本文作为个人博客,以备后用,如若不妥请告知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值