git - 在预提交 Hook 中使用 git add

标签 git eslint post-commit pre-commit

长话短说:使用 eslint --fix && git add在预提交 Hook 中有效,但它留下暂存文件而不是暂存文件!使用提交后 Hook 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 错误),这就是我想要解决的问题。

不知道从哪里开始我打开了 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/

相关文章:

windows - Git 钩子(Hook)输出 - 在哪里查看/查找

git - 您的主要分支不 protected

babeljs - 如何清除babel缓存?

svn - 简单的 SVN 提交后 Hook ,用于将更改的文件导出到测试服务器

svn - 由于提交后,Subversion 提交速度非常慢

javascript - Eslint: --fix 不根据 .eslintrc 规则解决警告

git - 将 gh-pages 和 wiki merge 在同一分支中

git - 'git push' 命令的奇怪响应

git - ssh 克隆不适用于 github

javascript - 使嵌套的 .eslintrc 无效