我想知道如何在eslint
prettier
阶段应用git-hook
和pre-push
自动修复。
我尝试过这样的事情:
./node_modules/.bin/eslint index.js --fix
git add .
git commit --amend --no-edit
它可以解决本地存储库中的问题,但不会将其推送到远程。然后同样在键入git status
后,我写成分别有1个和1个不同的提交,我必须使用git pull
来解决问题。
这会在仓库中产生超级混乱
在此链接下,您可以找到测试库:fix-pre-push。您有什么主意,我该如何实现?
答案 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
模式来拒绝不符合您选择的皮棉规则的提交。