无法向GitLab推送代码,远程端意外挂断问题求助
解决Git推送失败及signal 11段错误问题
从你遇到的情况来看,merge-base died of signal 11这个错误是关键——这属于Git进程的段错误(内存访问异常),几乎可以肯定和你使用的Git 2.17.0版本过旧直接相关,这个2018年的老版本存在不少稳定性bug,后续版本已经修复了大量这类问题。结合推送失败的现象,我建议按以下步骤逐一排查:
1. 优先升级Git到最新稳定版
旧版本Git在处理rebase、批量推送等操作时,很容易出现内存崩溃问题。升级是解决signal 11错误最有效的方式:
- Windows:直接下载最新Git安装包覆盖安装
- macOS:通过Homebrew执行
brew upgrade git - Linux(Ubuntu/Debian):执行
sudo apt update && sudo apt install git
升级完成后,先验证版本:
git --version
再尝试执行之前报错的命令:
git pull --rebase origin master
如果这个错误消失,再测试推送操作。
2. 放心切换到SSH方式推送
你之前担心SSH会推送所有历史,这完全是误解——SSH只是Git的身份验证和传输方式,和HTTPS的推送逻辑完全一致,不会额外推送任何内容。反而SSH比HTTPS更稳定,不容易出现连接中断问题:
- 先在GitLab个人设置的「SSH密钥」页面,添加你的本地SSH公钥
- 在终端修改远程仓库地址为SSH格式:
git remote set-url origin git@gitlab.com:me/myrepo.git - 测试SSH连接是否正常:
看到ssh -T git@gitlab.comWelcome to GitLab, @me!就说明配置成功了 - 再次尝试推送:
git push origin master
3. 检查本地仓库完整性
如果升级Git后还是出现signal 11错误,可能是本地仓库的Git对象损坏:
- 执行仓库完整性检查:
git fsck --full - 如果发现损坏的对象,建议重新克隆远程仓库,然后用
git cherry-pick将本地未推送的17次提交迁移到新仓库,再进行推送。
4. 临时网络排查(可选)
如果推送仍提示fatal: The remote end hung up unexpectedly,可以临时尝试:
- 关闭代理、防火墙,确认网络连接稳定
- 增大HTTP缓冲区(对旧Git版本效果有限,优先升级):
git config --global http.postBuffer 1048576000
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

