Recovery

误用 git clean 后的恢复

git clean 删除未跟踪文件后,优先从 IDE 本地历史、系统快照或构建产物来源恢复,并建立 clean 前预演与备份习惯。

适合谁看
  • 正在处理 Git 误操作的人
  • 想提前建立保守恢复习惯的协作者
前置知识
  • 先停手,不继续乱试命令
  • 能执行 `git reflog`、`git status`、`git log --graph`
常见风险
  • 还没保住旧位置就继续 reset / rebase
  • 在没判断影响面时直接改共享历史

git clean 清理的是未跟踪文件,Git 对这些文件通常没有历史记录。
所以恢复重点是“外部来源”,不是 reflog。

先确认删了什么

如果你先执行过 -n 预演,会更容易定位清单:

git clean -nd

若已经删除,马上停止进一步写盘操作,减少覆盖风险。

git clean 后的恢复git clean 是不可逆的,但可能还有其他来源可以找回文件。
检查来源
垃圾筒编辑器撤销文件系统恢复
可能恢复
未跟踪文件编辑器缓存系统备份
reflog 对 clean 帮助不大,因为 clean 不触发引用变化。

可尝试的恢复来源

  1. IDE Local History / Time Machine / 文件系统快照
  2. 构建产物或生成脚本可重建内容
  3. 同事分支或远端附件里可能有副本

为什么 reflog 常帮不上忙

reflog 记录的是引用移动,不记录未跟踪文件内容。
这类事故预防通常比恢复更关键。

预防策略(强烈推荐)

清理前先做两步:

git clean -nd
git stash push -u -m "pre-clean backup"

第一步看范围,第二步给未跟踪文件留保险。

不要直接 `git clean -fdx` 当作日常命令

-x 会连忽略文件一起删,风险很高。除非你明确知道当前目录中哪些文件可重建,否则先预演再决定。

接下来建议继续看什么

  1. recover lost stash
  2. git-clean
  3. reflog recovery