You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git切换分支后如何恢复本地未追踪文件?

恢复未提交且未追踪的Git文件

1. 利用Git垃圾回收机制找回文件

Git会暂时保留未被引用的对象(哪怕没提交/暂存),只要没手动清理,大概率能找回:

  • 执行命令 git fsck --lost-found,它会扫描所有无归属的Git对象,把找到的文件存到 .git/lost-found/other 目录里
  • 进入这个目录,用 cat 或文本编辑器查看文件内容,匹配你丢失的文件后,复制出来重命名即可

2. 检查Stash的残留记录

哪怕git stash pop没成功恢复,也可能有残留的stash记录:

  • 先跑 git stash list 看看有没有未清理的stash条目,如果有,用 git stash apply <stash-id> 尝试恢复
  • 如果stash已经被删除,执行 git reflog show stash 查看stash的操作历史,找到对应的哈希值,再用 git stash apply <哈希值> 尝试恢复

3. 通过HEAD历史快照恢复

切换分支前的工作区状态可能还在HEAD的reflog里:

  • 执行 git reflog,找到切换分支前的那条记录(比如类似 HEAD@{2}: checkout: moving from dev to main 的条目)
  • 用 git show HEAD@{n}:./<你的文件名> 查看该状态下是否存在目标文件,要是存在,用 git show HEAD@{n}:./<你的文件名> > <你的文件名> 把内容导出到新文件里

重要提醒

  • 别碰 git gc 或 git prune 命令,它们会彻底清理Git的临时对象,一旦执行,找回概率会大幅降低
  • 如果是被新分支的同名文件覆盖,先检查当前分支的该文件内容是不是你丢失的版本,不是再用上面的方法

内容的提问来源于stack exchange,提问作者Zeezan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:22:04