Git合并后误覆盖本地修改,如何恢复?
恢复未暂存的本地Git修改
方法1:利用Git对象数据库找回
Git会将你修改过的文件内容暂时以「松散对象」的形式存储在本地仓库中,即便未暂存也可能留下痕迹:
- 执行命令:
git fsck --lost-found
该命令会扫描仓库内所有未被引用的对象,并将它们存入.git/lost-found/other目录 - 逐个查看目录内的文件内容,比如用
cat .git/lost-found/other/[哈希文件名],定位到和你丢失的修改匹配的内容 - 找到目标内容后,直接复制回原文件,或用
git show [对象哈希] > 目标文件名将内容导出到指定文件
方法2:查看HEAD操作历史快照
如果拉取远程更新时Git生成了合并相关的快照,可以尝试回溯HEAD的变更记录:
- 执行
git reflog查看HEAD的操作历史,找到拉取更新前的HEAD记录(格式类似HEAD@{1}) - 用
git diff HEAD@{1} -- 你的文件名对比拉取前后的文件差异,确认是否包含丢失的修改 - 若差异中存在需要的内容,直接将对应部分复制回当前文件
额外补救:编辑器自动备份
不少代码编辑器会自动创建临时备份文件,可尝试检查:
- 编辑器生成的
.bak或~结尾的临时文件 - VS Code的
.vscode/backup目录(若开启自动备份功能) - 系统回收站(若文件被直接覆盖删除)
内容的提问来源于stack exchange,提问作者blip
相关产品推荐
相关产品推荐

