fatal: the remote end hung up unexpectedly
原因一:网络问题(常见)
说明:网络连接不稳定是导致此错误的常见原因之一
解决方案:可以尝试使用代理或VPN来解决,最好设置成全局模式
shell# 查看当前代理设置 git config --global --get http.proxy git config --global --get https.proxy # 全局 HTTP/HTTPS 代理,7897是本机代理的端口,如我使用的是clash verge,它默认的代理端口是7897 git config --global http.proxy http://127.0.0.1:7897 git config --global https.proxy http://127.0.0.1:7897 # 取消全局代理 git config --global --unset http.proxy git config --global --unset https.proxy # 项目级别的则在项目根目录下的终端执行上述命令,去掉 --global 参数即可,这里不再赘述
原因二:提交缓存区大小不足(常见)
说明:推送的文件超过了缓存区的大小限制,需要调整缓存区大小
解决方案:设置更大的缓存区
shell# 设置为500MB(你也可以设置更大的值),单位为二进制字节(Windows操作系统、内存常用),1MiB=1048576 字节(B) git config --global http.postBuffer 52428800
原因三:文件过大(常见)
- 说明:如果推送的文件过大,而远程仓库的限制较小,也可能导致出现此错误
- 解决方案:可以尝试将文件分割成较小的块,或者使用压缩工具(如gzip)减少文件大小
原因四:HTTP/HTTPS协议问题
- 说明:常见的问题有:HTTP 401(未授权)、HTTP 403(禁止访问)
- 解决方案:检查认证信息是否正确、联系仓库管理员解决权限问题
原因五:证书验证失败
说明:Git连接服务器时,会检查服务器发过来的“安全证书”,如果服务器使用的是自签名的证书(不是正规机构颁发的),那么可能导致这个问题
解决方案
临时跳过证书检查(不推荐,但是快)
shellgit config --global http.sslVerify false # 用完后建议恢复原状态 git config --global --unset http.sslVerify正规方案:将公司的自签名证书导入到你的电脑中
原因六:TLS版本过低
- 说明:你与服务器之间的”加密通话”版本不一致,你用的是一个很老的加密版本(如TLS 1.0),而服务器只接受更新的版本(如TLS 1.2或1.3),服务器感觉不安全,就直接拒接挂断了
- 解决方案:升级Git版本到最新版本
原因七:远程服务器本身问题
- 说明:远程服务器本身拒绝连接或超时,可能是代码托管平台正在维护或出了故障等问题
- 解决方案:延迟一定时间(如半个小时)再尝试推送