TL; DR:使用eslint --fix
&&预先提交钩子中的git add
可以正常工作,但是它会保留暂存而不是暂存的文件!使用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错误),这是我想要解决的问题。
我不知道从哪里开始我用lint-staged
打开 issue 151 但经过一些调查后,问题似乎与Git有关,而不是lint-staged
。< / p>
我只有基本的Git技能,所以为了减少干扰,我创建了一个没有lint-staged
或husky
的项目,并手动添加了一个预提交钩子。然后我运行了相同的测试(例如git commit -m "Some Message" index.js
),并且出乎意料地出现了同样的问题。为了解决这个问题,我还添加了一个运行git reset <staged-files>
的提交后挂钩,它似乎运行良好,但我不确定它是否是正确的解决方案。
如果您有使用此功能或者您是Git Guru,请查看 demo repo ,如果有更好的方法,请告诉我们。任何帮助将不胜感激。
答案 0 :(得分:1)
请参见https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-135454
解决方法:将git update-index -g
添加为提交后挂钩。