长话短说:使用 eslint --fix
&& git add
在预提交 Hook 中有效,但它留下暂存文件而不是暂存文件!使用提交后 Hook git reset <staged-files>
似乎可行,但是否有解决方案?
为了提供一些背景知识,我开始使用 lint-staged
和 husky
自动修复 git commit
上的 JavaScript lint 错误.如果您先暂存更改然后提交,这会非常有效,例如:
git add index.js
git commit -m "Some Message"
IntelliJ IDEA 似乎直接提交文件 (例如 git commit -m "Some Message" index.js
) 这仍然有效,自动修复的文件已提交。 不幸的是,它还留下了一个暂存文件(自动修复)和一个未暂存文件(原始 lint 错误),这就是我想要解决的问题。
不知道从哪里开始我打开了 issue 151 与 lint-staged
但经过一番调查,问题似乎与 Git 有关,而不是 lint-staged
.
我只有基本的 Git 技能,所以为了尽量减少干扰,我创建了一个没有 lint-staged
的项目或 husky
并手动添加了一个预提交 Hook 。然后,我运行了相同的测试(例如 git commit -m "Some Message" index.js
),不出所料,同样的问题出现了。为了解决这个问题,我还添加了一个运行 git reset <staged-files>
的提交后 Hook 。这似乎运作良好,但我不确定这是否是正确的解决方案。
如果您有这方面的经验或者您是 Git 大师,请查看 demo repo 如果有更好的方法,请告诉我们。任何帮助将不胜感激。
最佳答案
参见 https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-135454
解决方法:添加 git update-index -g
作为提交后 Hook 。
关于git - 在预提交 Hook 中使用 git add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43691064/