M1芯片Mac终端从GitHub执行git pull时报错error: fetch died of signal 9求解决
M1 Mac 执行git pull报
error: fetch died of signal 9排查与解决方案 signal 9即SIGKILL强制终止信号,代表git拉取流程中负责网络获取的fetch子进程被系统强行终止,结合M1芯片设备的运行特性,可按以下优先级逐次排查修复:
内存不足触发的系统强制杀进程
- macOS在内存压力过高时,会自动优先终止占用内存最高的进程释放资源;git拉取大体积仓库、开启并行打包线程时会出现明显的内存峰值,是触发该报错的最常见原因
- 临时验证:执行拉取操作前,通过活动监视器确认内存压力处于绿色无告警区间,关闭虚拟机、多开的浏览器标签、大型IDE等高内存占用程序后重试
- 长期配置优化:降低git fetch进程的内存峰值占用,依次执行全局配置命令:
# 将git打包线程数设置为单线程,避免多线程并行带来的内存陡增 git config --global pack.threads 1 # 关闭提交图自动写入,减少本地文件处理的内存消耗 git config --global fetch.writeCommitGraph false # 关闭动态压缩逻辑,降低压缩计算的CPU与内存占用 git config --global core.compression 0
M1架构下git版本不兼容
- 早期版本的git程序为x86_64(Intel)架构编译,在M1设备上需要通过Rosetta转译层运行,转译过程中容易出现内存访问异常,被系统直接发送SIGKILL终止
- 检查当前git的运行架构:执行
file $(which git),如果返回结果中标识为x86_64,即为转译运行的非原生版本 - 修复方式:重新安装适配arm64原生架构的git程序,安装完成后再次校验架构为arm64即可解决转译带来的崩溃问题
- 检查当前git的运行架构:执行
本地仓库文件损坏导致进程异常
- 之前的拉取流程如果出现断电、强制中断等异常情况,会导致本地
.git目录下的对象文件损坏,fetch进程在校验本地文件时会触发内存访问错误被终止- 先执行仓库完整性校验:
git fsck --full - 若检测出损坏、无效的本地对象,执行垃圾回收清理失效缓存后重试拉取:
git gc --prune=now
- 先执行仓库完整性校验:
大体积仓库的临时规避方案
如果拉取的单仓库体量超过1G,可通过浅拉取模式大幅降低单次拉取的资源消耗,绕开内存峰值限制:
git pull --depth=1
内容的提问来源于stack exchange,提问作者vmieres
相关产品推荐
相关产品推荐

