Skip to main content

使用预接收挂钩

在 GitHub Enterprise Server 上使用预接收挂钩强制实施存储库策略并阻止机密或无效提交等问题。

预接收钩子是在 Git 接受推送的提交之前于 GitHub Enterprise Server 上运行的脚本。 在代码进入存储库时,它们强制实施存储库、组织或企业策略。

预接收挂钩可以检查推送是否遵循所需的规则。 例如,挂钩可能会阻止包含机密的推送、使用非标准提交消息或更改受保护的文件。 如果推送通过检查,Git 会接受该推送。 如果推送失败,Git 将拒绝它,并显示错误消息。

如果您的推送未被接受,您将看到一条有关预接收钩子失败的错误消息。

$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 916 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: always_reject.sh: failed with exit status 1
remote: error: rejecting all pushes
To https://54.204.174.51/hodor/nope.git
 ! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://54.204.174.51/hodor/nope.git'

预接收钩子之所以重要,是因为它们会在更改进入存储库之前统一应用规则。 这可以减少手动评审负担,并防止策略冲突存储在 Git 历史记录中。

您的 GitHub Enterprise Server 站点管理员创建和移除预接收挂钩。 它们还可能允许组织或仓库管理员为特定作用域启用或禁用挂钩。 请参阅“使用预接收挂钩实施策略”。