GIT Proxy 一键设置代理让你的 git clone Github 再也不像百度云一样内行
这几天 git clone Github 是真的爆炸啊,永远都是 10kb/s 左右,也不是私有仓库啊?百度云都要直呼内行了。
由于我用的是 ssh 方式拉取代码的,于是乎终端 http proxy 也只能起到玄学(心理自我安慰)作用了。
到底如何设置 ssh 协议的 proxy 呢?
分辨需要设置的代理
- HTTP 形式:git clone https://github.com/PBK-B/test.git
- SSH 形式:git clone git@github.com:PBK-B/test.git
一、HTTP 形式
走 HTTP 代理
git config --global http.proxy "http://127.0.0.1:8080"
git config --global https.proxy "http://127.0.0.1:8080"
走 socks5 代理(如 小飞机 or V2xxxx)
git config --global http.proxy "socks5://127.0.0.1:1080"
git config --global https.proxy "socks5://127.0.0.1:1080"
取消设置
git config --global --unset http.proxy
git config --global --unset https.proxy
二、SSH 形式
修改 ~/.ssh/config
文件(不存在则新建):
# 必须是 github.com
Host github.com
HostName github.com
User git
# 走 HTTP 代理
# ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=8080
# 走 socks5 代理(如小飞机 or V2xxx)
# ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
对于 Windows 用户,要使用 socks5 代理却没有 nc 的,可以将
ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
换成
ProxyCommand connect -S 127.0.0.1:1080 %h %p
配合上面的修改,我这里分享一个我的自用 Linux 一键切换脚本,将下面代码写入 ~/.bash_profile(其他 bash 程序或电脑系统可能路径不太一样)
function github_on() {
cat "${HOME}/.ssh/config" >"${HOME}/.ssh/config_back" # 先备份
config=$(cat ${HOME}/.ssh/config_back | sed 's/\# ProxyCommand/ProxyCommand/g')
echo -e "${config}" >"${HOME}/.ssh/config" && echo -e "\033[36mGithub 已上代理!\033[0m"
}
function github_off() {
cat "${HOME}/.ssh/config" >"${HOME}/.ssh/config_back" # 先备份
config=$(cat ${HOME}/.ssh/config_back | sed 's/ ProxyCommand/ \# ProxyCommand/g')
echo -e "${config}" >"${HOME}/.ssh/config" && echo -e "\033[33mGithub 停止代理!\033[0m"
}
写完之后运行 source ~/.bash_profile
使配置文件生效,使用下面的指令就可以很爽的用啦
github_on
# 启动
github_off
# 关闭