如何在 git-hook 中应用 eslint/prettier 自动修复
How to apply eslint/prettier auto-fixes in git-hook
我想知道如何在 git-hook
pre-push
阶段应用 eslint
和 prettier
自动修复。
我试过这样的事情:
./node_modules/.bin/eslint index.js --fix
git add .
git commit --amend --no-edit
它修复了我本地存储库中的问题,但没有将其推送到远程。然后在我输入 git status
之后,它被写为我分别有 1 和 1 个不同的提交,我必须使用 git pull
来解决我的问题。这会在回购中产生超级混乱。
你知道我怎样才能做到这一点吗?
你的部分混乱来自 git commit --amend
:--amend
,git 总是 重写 HEAD
提交,所以你的 HEAD
在你有 运行 git push
之后提交将总是与以前不同。
混乱的另一部分是,由于您的钩子 运行s git add .
(而不是尝试有选择地选择文件或块),它总是会在您的工作树中添加所有内容。不再为您提供 git add <subdir>/
或 git add -p ...
:您的 pre-push
挂钩将始终添加磁盘上的 all。
挂钩(pre-commit 和 pre-push)恕我直言,更适合 只读 操作,必要时可以取消操作。
例如:您可以有一个 lint
脚本,具有 check
模式(检查 lint 规则并在不遵守规则时以非零代码退出)和 update
模式(应用规则的已知修复)。请注意,根据您的 linter,某些规则可能仍然需要一些手动操作。
在您的 pre-push 挂钩中使用 check
模式,并可能在脚本中包含 update
模式,该脚本将另外 git add
您的文件;至少,您将 re-gain 有机会在推动之前 审查您所承诺的内容 。
按照建议,您还可以在服务器端的挂钩中使用 check
模式来拒绝不遵守您选择的 lint 规则的提交。
我想知道如何在 git-hook
pre-push
阶段应用 eslint
和 prettier
自动修复。
我试过这样的事情:
./node_modules/.bin/eslint index.js --fix
git add .
git commit --amend --no-edit
它修复了我本地存储库中的问题,但没有将其推送到远程。然后在我输入 git status
之后,它被写为我分别有 1 和 1 个不同的提交,我必须使用 git pull
来解决我的问题。这会在回购中产生超级混乱。
你知道我怎样才能做到这一点吗?
你的部分混乱来自 git commit --amend
:--amend
,git 总是 重写 HEAD
提交,所以你的 HEAD
在你有 运行 git push
之后提交将总是与以前不同。
混乱的另一部分是,由于您的钩子 运行s git add .
(而不是尝试有选择地选择文件或块),它总是会在您的工作树中添加所有内容。不再为您提供 git add <subdir>/
或 git add -p ...
:您的 pre-push
挂钩将始终添加磁盘上的 all。
挂钩(pre-commit 和 pre-push)恕我直言,更适合 只读 操作,必要时可以取消操作。
例如:您可以有一个 lint
脚本,具有 check
模式(检查 lint 规则并在不遵守规则时以非零代码退出)和 update
模式(应用规则的已知修复)。请注意,根据您的 linter,某些规则可能仍然需要一些手动操作。
在您的 pre-push 挂钩中使用 check
模式,并可能在脚本中包含 update
模式,该脚本将另外 git add
您的文件;至少,您将 re-gain 有机会在推动之前 审查您所承诺的内容 。
按照建议,您还可以在服务器端的挂钩中使用 check
模式来拒绝不遵守您选择的 lint 规则的提交。