参考:

问题描述

当项目的文件比较多或者存在大文件时,通过 git clone 命令一直无法从服务器上把项目拉下来,会在最后会报如下错误:

  1. $ git clone -v git://192.168.8.5/butterfly025.git
  2. Cloning into 'butterfly025'...
  3. remote: Counting objects: 4846, done.
  4. remote: Compressing objects: 100% (3256/3256), done.
  5. fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
  6. fatal: early EOF
  7. fatal: index-pack failed

解决1

根据 stackoverflow 的回答修改 comporession=0,修改压缩的程度。

compression 是压缩的意思,从 clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1..9 是压缩速度与最终获得文件大小的不同程度的权衡,数字越大,压缩越慢,当然得到的文件会越小。

  1. # 为 git 添加配置项,通过下面的命令可以简单完成
  2. # 在这之前可以执行 git config -l 命令看看已有配置项有哪些
  3. git config --add core.compression -1
  4. git config --global --add core.compression -1(全局)

上面是通过命令来完成的,很方便,当然可以直接修改 .gitconfig 文件(在用户目录下),如果你愿意的话。部分内容如下:

  1. [user]
  2. name = Ggicci
  3. email = ...
  4. [core]
  5. compression = -1

可以通过 TortoiseGit 工具的 settings 界面打开 .gitconfig 文件。
image.png

解决2

这个错误可能是由于 git 内存不够引起的,修改配置。

  1. [core]
  2. packedGitLimit = 512m
  3. packedGitWindowSize = 512m
  4. [pack]
  5. deltaCacheSize = 2047m
  6. packSizeLimit = 2047m
  7. windowMemory = 2047m

作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/telnbx 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。