You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git远程推送失败:远端意外挂断,配置参数仍无效求助

Git Push 报错(Write failed: Broken pipe)排查思路

报错信息

Compressing objects: 100% (3749063/3749063), done.
Writing objects: 0% (1/23640040)
Write failed: Broken pipe
fatal: the remote end hung up unexpectedly
fatal: the remote end hung up unexpectedly

已尝试的全局配置

git config --global core.compression 0
git config --global core.packedGitLimit 512m
git config --global core.packedGitWindowSize  512m
git config --global ssh.postBuffer  52428800
git config --global http.postBuffer  52428800
git config --global pack.deltaCacheSize  2047m
git config --global pack.packSizeLimit  2047m
git config --global pack.windowMemory  2047m 

问题分析与解决思路

1. 网络层面原因

  • SSH连接稳定性问题:即便设置了ssh.postBuffer,远端服务器的SSH超时阈值过短、中间网络防火墙拦截或路由波动,都可能导致刚启动对象传输就断开。可以:
    • 执行ssh -T git@<远端仓库地址>,保持连接观察是否会主动断开;
    • 在本地~/.ssh/config中添加KeepAlive配置,维持连接:
      Host <远端仓库主机名>
        ServerAliveInterval 60
        ServerAliveCountMax 5
      
  • HTTP/HTTPS代理限制:如果使用HTTP协议推送,代理服务器可能限制了大文件传输时长或单次传输大小,尝试关闭代理后重试。

2. 远端仓库限制

  • 仓库容量或推送阈值超限:远端仓库可能设置了单仓库大小上限,或单次推送的对象数量/大小限制,导致刚开始写入就被拒绝。联系仓库管理员确认相关限制规则;
  • 远端存储故障:远端服务器磁盘满、权限异常等临时问题,会导致无法接收推送对象。可以先推送一个仅包含微小修改的测试提交,验证是否能正常完成推送,排除大提交的影响。

3. 本地仓库与提交问题

  • 超大文件或碎文件过多:要推送的对象总数达23640040,可能包含大量未用Git LFS管理的大文件,或过多碎文件。尝试:
    • 用git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print $1}')"定位仓库内的大文件,移除后重新提交;
    • 启用Git LFS管理大文件,避免直接推送大文件至仓库;
  • 本地仓库损坏:本地仓库的pack文件可能存在损坏,执行git fsck --full检查仓库完整性,修复损坏的对象。

4. 其他尝试方向

  • 拆分推送:将大提交拆分为多个小提交,分批推送至远端;
  • 更换传输协议:当前用SSH则换HTTPS尝试,反之亦然,绕过协议层面的限制;
  • 重启本地网络设备:排除路由器、网卡等本地设备的临时故障。

内容的提问来源于stack exchange,提问作者codeblue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:02:34