在我朝独有的无敌GFW关照下(当然,也有可能IP被网站封了),要下载网络上开源的软件是非常困难的一件事情,在这种情况下,使用VPN或者代理服务器就非常有必要了。对于单个应用翻墙来说,个人比较喜欢用翻墙代理。

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

Git支持四种协议 1 ,而除本地传输外,还有:git://, ssh://, 基于HTTP协议,这些协议又被分为哑协议(HTTP协议)和智能传输协议。对于这些协议,要使用代理的设置也有些差异:

  1. 使用 git协议 时,设置代理需要配置 core.gitproxy
  2. 使用 HTTP协议 时,设置代理需要配置 http.proxy
  3. 而是用 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来获取/更改项目了,此时,项目应该是使用代理来进行通讯的。

后记:

  1. 如果非必要,一般不使用 --global 的方式来设置代理,毕竟代理有的时候访问一些项目比直接访问还慢,特别是当代理在国外,项目源在国内的时候,按需使用才是王道。
  2. 不要多次使用不同的参数来设置代理,一般使用文中两种方式酌情选用即可, --global--system--local 各级设置后,可能会给自己带来不必要的麻烦。git默认是先到git Repository的配置文件中查找配置文件,如果没有才会到 --global 设置的文件中查找,因此,单个项目文件中的设置会覆盖 --global 的设置。
  3. 使用 --global 来配置的信息保存在当前用户的根目录下的 .config 文件中,而仓库中的配置保存在项目仓库的根目录下的 .git/config 文件中。
  4. 如果是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 设置同本文设置即可.

参考:

  1. git文档中指明服务器上的Git协议有:Local, HTTP, Secure Shell(SSH) and Git.
  2. 使用 git config --help 查看设置帮助
  3. Linux配置一节是来自 segmentfault ,权利归作者所有,本文作为个人博客,以备后用,如若不妥请告知。

Windows下git使用代理服务器的设置方法的更多相关文章

  1. 解决windows下git push卡住问题的方法

    问题描述: 在windows下向使用git协议传输的Git Repo进行push时会卡住. -- 这是windows上的msysgit的bug,在新版本上已经修复,但要在.gitconfig中做一项配 ...

  2. Windows下Git中正确显示中文的设置方法

    Windows下Git中正确显示中文的设置方法 具体设置方法如下: 进入目录etc:$ cd /etc 1. 编辑 gitconfig 文件:$ vi gitconfig.在其中增加如下内容: [gu ...

  3. windows下git的使用方法(码云)

    这表文章主要是用了可视化操作: 使用命令行操作:https://www.cnblogs.com/mswyf/p/9370238.html 一.安装Git Bash 为了在windows下使用Git,我 ...

  4. Windows下Git使用报错:warning:LF will be replaced by CRLF in ××××.××

    Windows下Git使用报错: warning:LF will be replaced by CRLF in ××××.××(文件名) The file will have its original ...

  5. Windows下mysql忘记密码的解决方法

    Windows下mysql忘记密码的解决方法 mysql5.0 http://www.jb51.net/article/21984.htm方法一: 1.在DOS窗口下输入 net stop mysql ...

  6. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  7. Windows下GIT安装与使用(上传远程端)

    Windows下GIT安装与使用(上传远程服务器) 1.  登陆http://msysgit.github.io/并下载Git 2.  打开下载的exe文件,一路默认(路径可以去修改).有可能电脑需要 ...

  8. Windows下Git Bash中VIM打开文件中文乱码

    Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...

  9. 图解Windows下 GIT GUI 使用教程

    https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...

随机推荐

  1. Xamarin iOS开发中的编辑、连接、运行

    Xamarin iOS开发中的编辑.连接.运行 创建好工程后,就可以单击Xamarin Studio上方的运行按钮,如图1.37所示,对HelloWorld项目进行编辑.连接以及运行了.运行效果如图1 ...

  2. jquery一些方法

    1.重置表单 $('.window-form')[0].reset(); 2.序列化表单 params = $('.window-form').serialize(); $.trim()是jQuery ...

  3. 逆序数2 HDOJ 1394 Minimum Inversion Number

    题目传送门 /* 求逆序数的四种方法 */ /* 1. O(n^2) 暴力+递推 法:如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]....t[N] 它的 ...

  4. BZOJ2851 : 极限满月

    把集合A[i]看作i点的前驱点集合,建成一个DAG,并新建超级源S,向每个前驱集合为空的点连边,那么B[i]就是S到i的必经点集合. 首先使用Lengauer-Tarjan算法建立出以S为起点的Dom ...

  5. BZOJ 1121 & science

    1121: [POI2008]激光发射器SZK Time Limit: 10 Sec Memory Limit: 162 MB Submit: 647 Solved: 537 [Submit][Sta ...

  6. BestCoder Round #74

    身败名裂啊...... T1WA了半天,30min才A. T2又WA了一发,然后Hack刚2min就被别人叉了. T3做完后最后40min不知所措. 去叉别人,看到一个人写D题判m=0很奇怪,随手把他 ...

  7. windows 中配置 nodejs npm

    npm安装模块的方式有两种:本地安装,全局安装. 这两者的区别在于,在用npm install xxx时加不加-g这个选项. 本地安装的路径在win中是当前cmd的路径.比如,我一打开cmd时,路径是 ...

  8. 关于JS中作用域的销毁和不销毁的情况总结

    window全局作用域->页面关掉才销毁函数执行会形成私有的作用域 1)作用域的销毁 一般情况下,函数执行形成一个私有的作用域,当执行完成后就销毁了->节省内存空间 2)作用域的不立即销毁 ...

  9. C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

    C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数, ...

  10. QTabWiget Change Color 改变颜色

    Qt中的QTabWiget 类提供了一个标签控件,但是这个控件默认初始化的颜色是白色,和原窗口的颜色不同,看起来非常的违和,所以我们希望将其的背景颜色设为当前窗口的背景颜色.我们所要做的就是先将应用程 ...