如何阻止git commit --no-verify命令?

46qrfjad  于 2023-03-28  发布在  Git
关注(0)|答案(3)|浏览(601)

我想为所有的git仓库设置一个pre-commit hook来使用jshint和phplint来验证语法错误。但问题是git有一个功能,可以通过使用--no-verify标志来跳过pre-commit hook。但我不需要使用这个选项。我可以为git阻止--no-verify标志吗?请提供一种方法。

piah890a

piah890a1#

首先:你不能明确地阻止别人传递--no-verify选项。也就是说,使用pre-commit钩子进行linting是一个很好的做法,避免毫无理由地传递--no-verify选项也是一个很好的做法。
但是,如果你想让传递--no-verify选项变得更麻烦,你可以:
1.生成验证令牌并将其附加到pre-commit中的提交消息;

  1. exit pre-receive,如果此令牌丢失或无效,则使用非零的exitcode退出pre-receive。(您可以在预接收钩子中执行的操作示例:https://github.com/github/platform-samples/tree/master/pre-receive-hooks
    有些人决定避免通过--no-verify可以手动执行第1步,这就是为什么这不是100%有效的原因。我不建议在专业环境中设置这一点,但我完全支持人们使用他们所掌握的工具来为自己灌输良好的习惯,同时学习更多关于git hooks的知识。
41zrol4v

41zrol4v2#

在你的VSCode的侧面,转到getLens为已安装的应用程序,然后点击设置图标。然后点击“扩展设置”。在顶部,有一个搜索输入框,只需输入“git”。你会看到“git(81)”。点击它,然后选中“允许无验证提交”的框

hgtggwj0

hgtggwj03#

git hooks是一个客户端验证(可以把它看作是一个前端),如果你想确保验证永远不会被跳过,你需要在CI(后端)上做。
以下是我个人对git hooks的看法:防止开发者在linter、测试等没有通过情况下合并PR是一个很好的实践。但是在CI上这样做,不要过早地在客户端强制执行它。这会不必要地减慢开发过程。允许开发人员决定何时修复linter问题,而不是说“你不能提交,直到你把它做得完美”。这将使他们能够专注于解决他们正在处理的问题,而不是必须以代码风格标准进行思考

相关问题