执行git merge A时出现‘fatal: stash failed’错误求排查解决
问题原因及解决方法
可能原因
- Git在合并前会自动尝试暂存未提交更改(即便
git status显示为空),但stash相关的底层存储文件(比如.git/refs/stash或.git/objects下的关联文件)出现损坏、权限异常,导致自动stash操作失败。 - 旧版本Git的自动stash逻辑存在bug,触发了无意义的stash失败错误。
解决方法
重置stash状态:手动创建并删除空stash,强制刷新stash底层状态
git stash create # 生成空stash对象,会返回哈希值(也可能为空) git stash drop # 删除最新stash(若上面有哈希值,可改用git stash drop <哈希值>)完成后再执行
git merge A尝试合并。修复.git目录权限:
- Linux/macOS系统:执行
chmod -R u+w .git,确保当前用户对.git目录有读写权限 - Windows系统:右键仓库文件夹→「属性」→「安全」,确认当前用户拥有完全控制权限
- Linux/macOS系统:执行
检查仓库完整性:
执行git fsck --full检查仓库是否存在损坏对象。若输出异常,可尝试用git reflog恢复丢失对象;若无法修复,直接从远程仓库重新克隆,再将分支B的提交通过git cherry-pick迁移到新仓库。升级Git版本:
若使用2.20之前的旧版本Git,升级到官方最新稳定版——很多旧版本的自动stash bug已被修复。
内容的提问来源于stack exchange,提问作者Tohnmeister
相关产品推荐
相关产品推荐

