执行git add .时冻结并报mmap failed错误,求保留旧提交的解决方法
解决
git add .冻结并报mmap failed的问题 实用绕过方案
既然单个文件执行git add <specific-file>正常,直接从批量添加入手绕开git add .的问题:
- 通配符批量添加:如果文件是同类型(比如都是
.txt),直接用git add *.txt;如果要包含所有非隐藏文件,用git add *;需要包含隐藏文件的话,再单独执行git add .[!.]*(自动排除.git目录) - shell遍历批量添加:用命令逐个添加所有未跟踪文件,避开
git add .的全局扫描逻辑:
仅针对当前目录文件的话,用更简单的命令:# Bash环境下,遍历所有非.git目录的文件 find . -type f -not -path './.git/*' -exec git add {} +for file in *; do git add "$file"; done
排查与配置调整
如果批量添加仍有问题,试试这些方向:
- 定位异常文件:执行
git add -v .,查看命令卡在哪个文件上,排查是否有权限异常、符号链接、空文件等特殊文件 - 禁用Git的mmap功能:报错和内存映射机制相关,直接禁用该特性:
若无效,调整mmap内存限制:git config --local core.mmapwindow 0git config --local core.mmaplimit 1048576
以上所有操作都会完整保留仓库旧提交,不会丢失历史记录。
内容的提问来源于stack exchange,提问作者Huka
相关产品推荐
相关产品推荐

