如何在git-hook中应用eslint /更漂亮的自动修复

时间:2020-11-02 23:29:08

标签: javascript git eslint githooks

我想知道如何在eslint prettier阶段应用git-hookpre-push自动修复。 我尝试过这样的事情:

./node_modules/.bin/eslint index.js --fix
git add .
git commit --amend --no-edit

它可以解决本地存储库中的问题,但不会将其推送到远程。然后同样在键入git status后,我写成分别有1个和1个不同的提交,我必须使用git pull来解决问题。

这会在仓库中产生超级混乱

在此链接下,您可以找到测试库:fix-pre-push。您有什么主意,我该如何实现?

1 个答案:

答案 0 :(得分:1)

您的部分混乱来自git commit --amend:使用--amend,git 总是重写HEAD提交,因此您的HEAD提交之后您运行过git push的情况将与以前有所不同。

混乱的另一部分是,由于您的钩子运行git add .(而不是试图有选择地选择文件或块),因此它将始终在您的工作树中添加所有内容。您不再需要git add <subdir>/git add -p ...了:您的pre-push钩子将始终添加磁盘上的 all


恕我直言,挂钩(预提交和预推送)更适合作为只读动作,并且可以在必要时取消该动作。

例如:您可以拥有一个lint脚本,具有一个check模式(检查不规则规则,如果不遵守规则则以非零代码退出)和一个update模式(应用规则的已知修补程序)。请注意,根据您的短毛猫,有些规则可能仍需要手动操作。

在预推钩中使用check模式,并可能在脚本中包含update模式,该脚本还将另外git add个文件;至少,您将重新获得机会在推送之前查看您所做的承诺

根据建议,您还可以在服务器端的挂钩中使用check模式来拒绝不符合您选择的皮棉规则的提交。