git clone 设置代理

设置代理

在国内的小伙伴经常会遇到git clone的时候超级慢,甚至只有个位数的速度
这时候我们就需要让git走梯子了。本文默认你有一个并且可用的梯子。
首先是设置代理:

# git clone http://...
git config --global http.proxy 'socks5://127.0.0.1:1081'
# git clone https://...
git config --global https.proxy 'socks5://127.0.0.1:1081'
# git clone git://...
git config --global core.gitproxy 'socks5://127.0.0.1:1081'

这样就设置好了。
取消代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

问题来了当我们用ssh协议也就是这种git clone git@github.com:xxx/xxxx.gitclone代码的时候发现依旧还是很慢,所以这边推荐使用ProxyCommand来设置ssh协议的代理,以macOS为例:
首先编写一个脚本 /YOUR PATH/gitproxy.sh

#!/bin/sh 
nc -X 5 -x 127.0.0.1:1081 "$@"

然后修改~/.gitconfig

[core]
	gitproxy = /YOUR PATH/gitproxy.sh

最后新建~/.ssh/config文件:

Host github.com
Hostname github.com
ProxyCommand nc -v -x 127.0.0.1:1081 %h %p

现在再clone就能看到飞一般的速度了。

Windows的修改案例:
在自己的用户文件夹找到 .ssh 文件夹,比如我的是 C:\Users\wby.ssh ,在里面新建一个空白文件,取名 config。注意不是 config.txt !不是 config.txt !不是 config.txt!我强烈建议把 Windows 的后缀显示给打开,不然你根本不知道自己到底在编辑什么文件。

config文件里写上一行就行:
ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:1081 %h %p
这里 git 的安装路径和后面的代理自己看着填,不要试着用相对路径,保证要吃亏。因为 Program Files 文件夹中间带一个空格,所以这里需要把整个路径给引号引起来。 后面的代理的话,-S 指是 socks 代理,默认是 socks5,后面的 %h %p 意思是 Host 和 Port,必须得写上,我也不知道为什么要这么设计。 如果要使用 HTTP 代理,就写 -H,更多代理类型(比如 socks4)请参这个。上这个写法是针对全局的,如果想只针对某个网站的话,就这么写:

Host github.com     
  ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:1081 %h %p

Host gitlab.com     
  ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:1081 %h %p

接下来可以先初步尝试一下,找个地方随便 clone 个仓库试试。比如 git clone git@github.com:nodejs/node.git,nodejs 的官方库,clone过来有800MB+,作为速度测试还是蛮可以的。这时候会出现一个问题,程序会对你询问代理的密码,如果你代理没有设置密码就直接回车即可。

# git 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×