具体报错信息:
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
错误原因分析:
- 如果 git 项目太大,拉代码的时候可能会出现这个错误。
- git 有两种拉代码的方式,一个是 HTTP,另一个是 ssh。git 的 HTTP 底层是通过 curl 的。HTTP 底层基于 TCP,而 TCP 协议的实现是有缓冲区的。所以这个报错大致意思就是说,连接已经关闭,但是此时有未处理完的数据。
解决办法:
-
增大缓冲区
切到 git 项目目录后,执行如下命令
// 524288000 的单位代表 B,524288000B 也就是 500MB。
// 这个值的大小,可自行酌情设置。
git config --global http.postBuffer 524288000
查看是否设置成功
git config –list | grep postbuffer -
clone git的项目的时候,经常都会遇到项目很大,提交历史很长,导致clone的时候花大半天都clone不下来的问题。而且如果直接git clone,必须一次把所有的历史clone下来,否则失败就直接丢弃所有。如果只是需要最新内容,或者网络不好,总是网络中断的情况,非常不友好。
实际上,如果只需要看最新的提交,使用depth参数,就可以实现只clone最新的代码:
git clone --depth 1 $clone_url
当然,还能使用 --single-branch 参数,指定对应分支。
这个clone出来的结果,就是一个shadow,只有部分提交的git repo