参考:
问题描述
当项目的文件比较多或者存在大文件时,通过 git clone 命令一直无法从服务器上把项目拉下来,会在最后会报如下错误:
$ git clone -v git://192.168.8.5/butterfly025.git
Cloning into 'butterfly025'...
remote: Counting objects: 4846, done.
remote: Compressing objects: 100% (3256/3256), done.
fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
fatal: early EOF
fatal: index-pack failed
解决1
根据 stackoverflow 的回答修改 comporession=0,修改压缩的程度。
compression 是压缩的意思,从 clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1..9 是压缩速度与最终获得文件大小的不同程度的权衡,数字越大,压缩越慢,当然得到的文件会越小。
# 为 git 添加配置项,通过下面的命令可以简单完成
# 在这之前可以执行 git config -l 命令看看已有配置项有哪些
git config --add core.compression -1
git config --global --add core.compression -1(全局)
上面是通过命令来完成的,很方便,当然可以直接修改 .gitconfig 文件(在用户目录下),如果你愿意的话。部分内容如下:
[user]
name = Ggicci
email = ...
[core]
compression = -1
可以通过 TortoiseGit 工具的 settings 界面打开 .gitconfig 文件。
解决2
这个错误可能是由于 git 内存不够引起的,修改配置。
[core]
packedGitLimit = 512m
packedGitWindowSize = 512m
[pack]
deltaCacheSize = 2047m
packSizeLimit = 2047m
windowMemory = 2047m
作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/telnbx 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。