首页 > 解决方案 > 为什么在取消 git 提交后我的更改消失了,如何恢复它们?

问题描述

这是我所做的:

  1. 编码 8 小时的更改。
  2. git status显示我的所有更改。
  3. git add -A
  4. git commit -m "Foo". 预提交 git 钩子使用huskyand触发lint-staged
  5. 我记得有一个我未能修复的 TypeScript 输入错误,所以我按 Ctrl+C 取消。
  6. 心不在焉,我又跑git commit -m "Foo"了一次,立即取消。
  7. 变化消失了!文件被还原,git status干净,git log并且git reflog不显示新的提交。

为什么我的更改被还原了?我该如何恢复它们?

第1步 第2步

标签: githuskygit-huskylint-staged

解决方案


好吧,这是lint-staged罪魁祸首。它隐藏了我的更改。

所以跑步git stash apply恢复了他们!


⚠ 不要尝试lint-staged在同一个 git repo 上并行运行多个实例(例如在 monorepo 中的每个项目上)。这将破坏您的更改,而无法恢复它们。

如果你在 monorepo 上工作,要么按顺序 lint 项目,要么放弃lint-staged并 lint 整个代码库,包括未暂存的文件。


推荐阅读