提交不会发生

问题描述

我设置了 husky 来进行预提交格式化和运行测试。当我做 git commit -m "readme fix" 时,我得到了这个:

 PASS  src/App.test.jsx
  ✓ plug (15 ms)

Test Suites: 1 passed,1 total
Tests:       1 passed,1 total
Snapshots:   0 total
Time:        0.91 s,estimated 1 s
Ran all test suites related to changed files.

Watch Usage
 › Press a to run all tests.
 › Press f to run only Failed tests.
 › Press q to quit watch mode.
 › Press p to filter by a filename regex pattern.
 › Press t to filter by a test name regex pattern.
 › Press Enter to trigger a test run.

但实际上并没有提交。我不能对终端做任何事情?除了 Ctrl + C。即使我尝试输入 a、f、q 等 - 也没有任何反应。如何实际提交?我做错了什么?

解决方法

一长串“按某事...”消息表明测试运行器没有退出,但它正在等待做更多的事情。按 q,它将退出并结束提交。

更改运行测试的方式,使其不在“监视”模式下启动(您可能应该从其命令行中删除 --watch)。

您发布的输出看起来类似于 jest 的输出。看看Jest CLI options

--watch--watchAll 的目的是以 TDD 工作方式运行 Jest。在初始执行测试后,它会监视测试文件并在修改后立即运行它们。你不再关心运行它,你只需要编写用例和代码。
它不适合你想要的。


顺便说一句,运行测试或代码 linting 或代码美化器或任何其他需要 0.5 秒以上才能完成的程序是一个坏主意。 Git 与 Subversion 或其他较旧的 CVS-es 之间的主要区别之一是,使用 Git 会立即提交。遵循 Git 哲学是保存工作的更明智的方法。你应该经常提交,提交操作不应该妨碍你。通过添加冗长的操作作为提交钩子,您可以防止自己使用 Git,因为它被设计为使用。