Git中如何恢复已丢弃的更改?分支操作后未提交更改丢失求助
恢复未提交丢失的Git更改
方法1:扫描Git数据库找回丢失对象
Git会把所有文件修改的快照以对象形式存在本地数据库,哪怕没提交也可能留存:
- 执行命令:
git fsck --lost-found,该命令会扫描未被引用的Git对象,将它们存入.git/lost-found/other目录 - 逐个查看目录里的对象内容:
git show <对象哈希值>,找到你丢失的修改内容 - 导出找到的内容到文件:
git show <对象哈希值> > 目标文件名
方法2:通过reflog追踪操作记录
如果修改曾经被git add暂存过,可通过操作日志定位:
- 运行:
git reflog,查看所有分支的操作历史,寻找和你修改相关的条目 - 找到对应哈希值后,用
git show <哈希值>查看内容,再导出到文件恢复
方法3:对比HEAD历史版本差异
如果刚丢弃修改不久,可直接对比上一个HEAD状态:
- 执行:
git diff HEAD@{1} HEAD,查看当前HEAD和上一个版本的差异 - 从差异结果里复制你需要的内容,粘贴回对应文件即可
重要提醒
- 以上方法仅在本地Git未执行
git gc(垃圾回收)时有效,一旦垃圾回收清理了未引用对象,数据可能永久丢失 - 后续操作建议:分支切换前,要么把修改提交到当前分支,要么用
git stash暂存修改,避免此类问题
内容的提问来源于stack exchange,提问作者Avetis90
相关产品推荐
相关产品推荐

