如何防止跳过 Git 个 Hooks

How to prevent the skipping of Git Hooks

是否有一些配置可以设置为 git 严格不能跳过钩子的地方。我已经设置了一些钩子来检查和修复我的队友 javascript 代码,但是他们中的一些人一直在使用 --no-verify 选项跳过钩子,因为他们认为这是一个错误。

是否可以防止跳钩?

Git 没有提供强制使用挂钩的方法。在某些情况下,命令接受 --no-verify 以允许在 case-by-case 基础上覆盖这些挂钩。

Git 允许这样做,因为提交 in-progress 工作而不需要 运行 昂贵的 lint 检查并稍后回来清理它可能很有用,或者作为替代方案至 git stash。经验丰富的开发人员经常这样做。

即使 Git 确实提供了此功能,也无法阻止开发人员删除挂钩或删除可执行位以防止其 运行ning,或将命令注释掉 运行。拥有克隆的用户被假定(以标准的 Unix 方式)有能力并且能够自己决定挂钩到 运行,因此挂钩不打算在对抗性环境中使用。

如果您想强制执行编码风格和 lint 规则,您应该使用 CI 作业来实现。您可以配置您的 CI 系统来检查您的代码并检查样式规则,可能在 per-commit 的基础上,并且除非检查通过,否则不允许合并。对于更主观的检查,代码审查可能会有所帮助(无论如何都推荐)。

这并不是说挂钩不能帮助开发人员及早发现问题,但不能将它们强加给用户。如果开发人员知道 CI 如果挂钩不通过,系统将无法合并,他们可能会更愿意使用它们。他们也有可能选择禁用潜在的昂贵挂钩,让更强大的 CI 系统为他们进行检查,这也是一种合法的方法。