git - 为什么在取消 git 提交后我的更改消失了,我该如何恢复它们?

标签 git husky git-husky lint-staged

这是我所做的:

  • 编码 8 小时的更改。
  • git status显示我的所有更改。
  • git add -A
  • git commit -m "Foo" .使用 husky 触发预提交 git 钩子(Hook)和 lint-staged .
  • 我记得有一个我未能修复的 TypeScript 输入错误,所以我按 Ctrl+C 取消。
  • 心不在焉地跑git commit -m "Foo"再次并立即取消。
  • 变化消失了!文件已还原,git status很干净,git loggit reflog不显示新的提交。

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

    step 1 step 2

    最佳答案

    好的,它是 lint-staged惹的祸。它 stash 了我的更改。
    所以运行git stash apply恢复他们!

    ⚠ 不要尝试运行 lint-staged 的多个实例在同一个 git repo 上并行(例如在 monorepo 中的每个项目上)。这将破坏您的更改,而无法恢复它们。
    如果你在 monorepo 上工作,要么按顺序 lint 项目,要么放弃 lint-staged并检查整个代码库,包括未暂存的文件。

    关于git - 为什么在取消 git 提交后我的更改消失了,我该如何恢复它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334337/

    相关文章:

    husky - .husky/预提交 : 2: . : Can't open . husky/_/husky.sh

    git - 带有预提交的 Pylint 和带有 husky 的 EsLlint

    node.js - 在git中 merge package.json(解决版本冲突)

    ruby-on-rails - 更改 Rails 的 github 存储库

    svn - 将 Git 历史移植到 SVN 分支上

    eslint - 如何使用 Husky 版本 6 进行 lint-staged 工作

    git - 为什么我的 git pre-commit 钩子(Hook)没有运行?

    jestjs - 没有找到测试用例 Jest

    node.js - sh : husky: command not found

    Git:删除 repo 中的所有文件然后回滚提交有任何长期影响吗?