ZBLOG

git push fatal: the remote end hung up unexpectedly

这个错误 fatal: the remote end hung up unexpectedly 通常表示 Git 服务器在推送过程中意外断开连接,可能的原因包括 网络问题、数据量过大、认证失败或服务器限制。以下是详细的解决方案:


1. 检查网络连接

  • 测试网络稳定性
    1. ping github.com # 或你的Git服务器地址
  • 如果是代理问题(比如公司网络):
    1. git config --global --unset http.proxy # 取消代理
    2. git config --global --unset https.proxy

2. HTTPS/SSH协议切换

  • 从HTTPS切换到SSH(避免HTTP限制):
    1. git remote set-url origin git@github.com:用户名/仓库名.git
  • 如果已经是SSH,检查密钥是否生效:
    1. ssh -T git@github.com # GitHub测试连接

3. Git缓冲区调大

增大HTTP POST缓冲区(针对HTTPS):

  1. git config --global http.postBuffer 524288000 # 500MB

启用压缩传输(减少数据量):

  1. git config --global core.compression 9

4. SSH长连接配置

如果是SSH超时,修改 ~/.ssh/config

  1. Host *
  2. ServerAliveInterval 60
  3. TCPKeepAlive yes

5. Git服务端限制

自建Git服务(如GitLab/Gitea)

  • 调整Nginx/Apache的client_max_body_size(参考前文)。
  • 检查Git超时设置(如Unicorn/Gunicorn)。

GitHub/GitLab公有云

  • GitHub默认允许大推送,但建议用 git-lfs管理二进制文件。
  • GitLab可能需要调整仓库的接收限制。

6.分批次推送

如果历史提交过大,尝试分批推送:

  1. git push origin main --force-if-includes #强制推送(慎用)

或拆分提交到新分支。


7. Debug详细日志

启用GIT_TRACE查看详细错误:

  1. GIT_TRACE=1 GIT_CURL_VERBOSE=1 git push origin main

常见原因总结

原因 解决方案
HTTP请求过大 http.postBuffer调大或改用SSH
SSH认证失败 检查~/.ssh/id_rsa.pub是否添加到Git服务
服务器限制 Nginx调整client_max_body_size
Git版本过旧 git update-git-for-windows升级

如果问题仍未解决,提供完整的错误日志和Git版本信息可进一步分析。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23662

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?