在Linux系统中,使用Git进行大型项目操作时,尤其是在对大文件或多文件进行操作时,比如:在git clone <项目链接> <下载路径> 时,若系统分配给Git的内存不够大,会报以下错误:
error: 预期仍然需要 1119 个字节的正文2 MiB | 92.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: 过早的文件结束符(EOF)
fatal: fetch-pack:无效的 index-pack 输出
或者内存溢出的错误:
fatal: Out of memory, malloc failed (tried to allocate 16777216000 bytes)
因此我们需要设置网络上行和下行速度,内存分配给Git有2GB,写入时以Byte为单位。
最重点的是:http.version设置为HTTP/1.1
yammie@oym-pc:~ $ git config --global http.lowSpeedLimit 0
yammie@oym-pc:~ $ git config --global http.lowSpeedTime 999999
yammie@oym-pc:~ $ git config --global http.postBuffer 2048576000
yammie@oym-pc:~ $ git config --global http.version HTTP/1.1
此时从远程仓库克隆项目到本地下载区,成功。
# 从远程仓库克隆git文件到~/下载/Programs/git中
yammie@oym-pc:~ $ git clone https://github.com/git/git.git ~/下载/Programs/git
正克隆到 ‘/home/yammie/下载/Programs/git’...
remote: Enumerating objects: 364972, done.
remote: Counting objects: 100% (237/237), done.
remote: Compressing objects: 100% (123/123), done.
remote: Total 364972 (delta 145), reused 180 (delta 114), pack-reused 364735
接收对象中: 100% (364972/364972), 236.60 MiB | 2.44 MiB/s, 完成.
处理 delta 中: 100% (274631/274631), 完成.