解决错误
fatal: The remote end hung up unexpectedly
解决方案:
修改
postBuffer
1
git config --global http.postBuffer 524288000
使用ssh协议去clone
提高速度
方法一 使用git://
将git clone https://github.com/xxx.git
中的https://
更换为git://
1
git clone git://serverRepo myRepo
方法二 使用depth
参数
仅拉取最新版本
clone的项目的时候,经常都会遇到项目很大,提交历史很长,导致clone的时候花大半天都clone不下来的问题。而且如果直接git clone,必须一次把所有的历史clone下来,否则失败就直接丢弃所有。用git clone 命令去克隆的时候经常导致服务端内存爆满,clone不下来。若不需要去关注以前的版本,可以只clone最新的版本,使用如下命令:1
git clone --depth=1 git://serverRepo myRepo
git fetch
在使用depth 1参数把最后一个提交clone出来之后,如何一步步获取历史提交呢?既然有只含有部分commit的shadow,就肯定有办法把这个shadow扩展为完整repo的指令,这个指令就是fetch。例如,之前已经clone了depth为1的commit,剩下的就是逐步fetch剩下的commit了。1
git fetch --depth $depth
depth为1,表示从最新的提交开始,往下获取1个commit(也就是那个最新的commit)
depth为2,表示从最新的提交开始,往下获取2个commit(最新的commit加一个第二新的commit)
以此类推
获取某个分支
如果想获取某个具体的分支,可以使用branch 命令,拉取某个分支的最新版本代码,比如要获取release/1.6.0
分支的代码:1
git clone -b release/1.6.0 --depth=1 git://serverRepo myRepo
方法三 (伪)断点续传
clone
和fetch
都有了depth
了,那就可以用depth
来对任务进行分割了,记一下上次的depth
,每次只要比上次depth
多至少1,就可以不断把内容fetch
下来了。这个执行出错了,就在上一次成功的depth
上面加1,重新执行命令就行了。
脚本地址
方法四 添加域名映射(修改host)
- 访问
http://github.global.ssl.fastly.net.ipaddress.com/#ipinfo
获取cdn
域名以及IP
地址 - 访问
http://github.com.ipaddress.com/#ipinfo
获取cdn
域名以及IP
地址 - 将上述获取的
IP
地址添加到host
文件当中 - 刷新
dns
缓存
方法五 使用ss代理
http(s)全局代理
- 开启ss代理
- 在命令行中执行如下操作:
1
2git config --global http.proxy http://127.0.0.1:$port
git config --global https.proxy https://127.0.0.1:$port
1080端口是默认的ss代理端口,可根据配置进行修改
仅对GitHub使用代理
上述方法为使用全局代理,如果挂了全局代理,这样如果需要克隆coding之类的国内仓库,会奇慢无比,所以可以仅对GitHub进行代理1
2git config --global http.https://github.com.proxy https://127.0.0.1:$port
git config --global https.https://github.com.proxy https://127.0.0.1:$port
取消代理设置
1 | git config --global --unset http.proxy |
socks5代理
1 | git config --global http.https://github.com.proxy socks5://127.0.0.1:$port |
参考资料
https://blog.csdn.net/zerooffdate/article/details/79348925
https://segmentfault.com/a/1190000016992360
https://www.jianshu.com/p/aa82b43d369e