Git执行git push production master时压缩文件后读取对象失败求助
解决Git Push时出现的
fatal: unable to read <哈希>和remote: fatal: early EOF错误 我之前也碰到过一模一样的问题,这个错误通常和Git的压缩配置、网络传输中断或者本地仓库对象损坏有关,不用太慌,试试下面这些方案:
先把你遇到的错误信息贴出来方便参考:
Counting objects: 1861, done. Delta compression using up to 8 threads. Compressing objects: 100% (1808/1808), done. fatal: unable to read 58926d52844e79d28435d8ea82bd8c7107e01a48 remote: fatal: early EOF
方案1:检查并修复本地仓库完整性
unable to read的提示大概率是本地某个Git对象损坏了,先执行仓库完整性检查命令:
git fsck --full
如果输出里显示有损坏的对象,你可以尝试从远程仓库重新拉取对应分支的完整数据,或者用其他本地备份的正常对象替换损坏的部分。
方案2:调整Git的压缩与内存配置
高压缩率或内存不足可能导致压缩过程超时,进而触发early EOF。你可以临时降低压缩级别,同时限制打包时的内存使用:
# 关闭压缩(临时解决,之后可改回默认值6) git config --global core.compression 0 # 限制打包窗口的内存占用 git config --global pack.windowMemory "100m" # 限制单个pack文件的大小 git config --global pack.packSizeLimit "100m"
设置完成后再尝试推送,能有效减少压缩过程中出现的问题。
方案3:分批次推送代码
如果一次性推送的提交太多、文件体积过大,很容易在传输时中断。可以尝试分批次推送最近的提交:
# 先推送最近10个提交 git push production master~10:master
成功后再逐步推送剩余的提交,直到所有变更都推送到远程。这样每次传输的数据量小很多,不容易触发early EOF。
方案4:清理本地仓库的冗余数据
本地仓库的冗余pack文件可能导致推送数据量异常,执行仓库清理命令优化结构:
git gc --aggressive --prune=now
这个命令会整理仓库、删除无用对象,减少推送时需要传输的数据量。
方案5:检查网络连接或切换推送协议
如果是网络不稳定导致的传输中断,可以试试切换推送协议:比如之前用HTTPS就换成SSH,反之亦然。另外也可以检查网络是否有波动,比如暂时关闭代理再尝试推送。
内容的提问来源于stack exchange,提问作者brunam
相关产品推荐
相关产品推荐

