引言

近期使用git拉取仓库的时候,拉取了好几次都不行,总是反馈说过早的文件结束符

fatal: 过早的文件结束符(EOF)
fatal: 无效的index-pack输出

总是这样,当然我的报错信息并没有描述完整,因为在我检索此类问题的时候,我发现有好多种所谓的过早的文件结束符这样的报错,但是细节部分描述不太一致。

情况一

比如说,我的完整报错信息是这样的:

client_loop: send disconnect: Broken pipe | 9.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: 过早的文件结束符(EOF)
fatal: fetch-pack: 无效的 index-pack 输出

关键信息在前两行,前两行告诉我们发生了某种断开连接, 9.00 KiB/s应该是表示网络速率,因此可以确定,发生这个问题的原因属于网络部分,本机连接仓库服务器时网络不稳定 我把无线网络更换为手机分享的热点之后,再次尝试,问题解决。所以遇到这个问题的时候,要么切换成4G热点或者其他网络,要么可以等待一段时间再尝试。

情况二

error: RPC failed; curl 12 tranfer closed with outstanding read data remaining.
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack失败

关键信息是第一行的curl,出现这个关键词,基本可以确定是由于远程仓库中存在过大的文件,我们可以扩大一下传输限制

开启git bash,然后输入 git config --global http.postBuffer 1048576 * 10。当然了,你在设置http的postBuffer值时要参考你的仓库文件大小,我上面 10485760是10MB的大小限制,满足最大文件的大小即可,除此之外还有另一种方法,可以在资源管理器 > 用户 > $YOUR_NAME > .gitconfig 中右键编辑此文件,添加如下内容:

[http](如果没有http这个分类需要添加此行,有的话直接在分类下追加)
     postBuffer = 10485760

然后保存,重新拉取,问题解决。