git clone 的速度慢到无法忍受,提供一些解决方案。
减小下载量
方案一
git clone 默认会下载项目的完整历史版本,如果你只关心最新版的代码,而不关心之前的历史信息,可以使用 git 的浅复制功能:
1
| git clone --depth=1 https://github.com/bcit-ci/CodeIgniter.git
|
–depth=1 表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,例如,CodeIgniter 项目完整下载有近 100MiB ,而使用浅复制只有 5MiB 多,这样即使在恶劣的网络环境下,也可以快速的获得代码。
如果之后又想获取完整历史信息,可以使用下面的命令:
方案二
如果你只是想下载最新的代码看看,你也可以直接从 GitHub 上下载打包好的 ZIP 文件,这比浅复制更快,因为它只包含了最新的代码文件,而且是经过 ZIP 压缩的。但是很显然,浅复制要更灵活一点。
使用代理
HTTP与HTTPS代理
1 2
| git config --global http.proxy http: git config --global https.proxy https:
|
使用上面的命令配置完之后,会在 ~/.gitconfig 文件中多出几行:
1 2 3 4
| [http] proxy = http: [https] proxy = https:
|
可以使用下面的命令检查配置是否生效:
1 2
| $ git config --global --get http.proxy $ git config --global --get https.proxy
|
如果你想取消该设置
1 2
| $ git config --global --unset http.proxy $ git config --global --unset https.proxy
|
在命令行中配置代理
要注意的是使用 git config –global 配置的代理只能供 git 程序使用,如果你希望让命令行中的其他命令也能自动使用代理,譬如 curl 和 wget 等,可以使用下面的方法:
1 2
| $ export http_proxy=http://proxyuser:proxypwd@proxy.server.com:8080 $ export https_proxy=https://proxyuser:proxypwd@proxy.server.com:8080
|
这样配置完成后,所有命令行中的 HTTP 和 HTTPS 请求都会自动通过代理来访问了。如果要取消代理设置,可以:
1 2
| $ unset http_proxy $ unset https_proxy
|
还有一点要注意的是,使用 http_proxy 和 https_proxy 只对 HTTP 和 HTTPS 请求有效,所以当你 ping www.google.com 的时候如果 ping 不通的话,也就没什么大惊小怪的了。
检查生效的话用wget www.google.com
就行了。
proxychains4
安装
1 2 3 4 5 6 7 8 9
| git clone https://github.com/rofl0r/proxychains-ng.git cd proxychains-ng ./configure (sudo) make && make install cp ./src/proxychains.conf /etc/proxychians.conf cd .. && rm -rf proxychains-ng 或者 brew install proxychains-ng //mac
|
修改配置
1 2 3 4 5 6 7 8 9 10 11 12
| vim /etc/proxychains.conf 推荐配置 strict_chain proxy_dns remote_dns_subnet 224 tcp_read_time_out 15000 tcp_connect_time_out 8000 localnet 127.0.0.0/255.0.0.0 quiet_mode [ProxyList] socks5 127.0.0.1 1080
|
使用例子
1 2 3 4
| proxychains4 curl https://www.twitter.com/ proxychains4 git push origin master wget https://www.dropbox.com -v -O /dev/null //直接输入这条语句连接不了 proxychains4 wget https://www.dropbox.com -v -O /dev/null //加入proxychains4之后就可以顺利执行
|
参考资料
[1] git clone 太慢怎么办?
[2] 为 git 配置代理
[3] git代理配置
[4] proxychains+shadowsocks神器