在预提交钩子中使用git add

时间:2017-04-29 01:58:04

标签: git eslint post-commit pre-commit

TL; DR:使用eslint --fix&amp;&amp;预先提交钩子中的git add可以正常工作,但是它会保留暂存而不是暂存的文件!使用git reset <staged-files>的提交后挂钩似乎可行但是有解决方案吗?

为了提供一些背景知识,我开始使用lint-stagedhusky自动修复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-stagedhusky的项目,并手动添加了一个预提交钩子。然后我运行了相同的测试(例如git commit -m "Some Message" index.js,并且出乎意料地出现了同样的问题。为了解决这个问题,我还添加了一个运行git reset <staged-files>的提交后挂钩,它似乎运行良好,但我不确定它是否是正确的解决方案。

如果您有使用此功能或者您是Git Guru,请查看 demo repo ,如果有更好的方法,请告诉我们。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

请参见https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-135454

解决方法:将git update-index -g添加为提交后挂钩。