You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止向GitHub仓库推送非企业邮箱的提交?仅允许*@mycompany.com

禁止GitHub仓库推送非企业邮箱提交的实现方法

可以实现,主要通过GitHub原生规则或自托管环境下的预接收钩子来限制提交邮箱,具体方法如下:

方法一:使用GitHub原生仓库规则(推荐)

该方法适用于GitHub付费计划(Team/Enterprise)的私有仓库或公共仓库,无需编写脚本:

  • 进入目标仓库的「Settings」→「Rules」→「Rulesets」
  • 点击「Create ruleset」,选择需要限制的分支(如main、develop)
  • 在「Conditions」→「Commit author email」中选择「Matches regex」,填入正则表达式:^.*@mycompany\.com$
  • 开启「Block rule violations」选项,不符合邮箱格式的提交会被直接拦截
  • 保存规则即可生效

方法二:预接收钩子(自托管GitHub Enterprise适用)

如果使用自托管的GitHub Enterprise实例,可以自定义预接收钩子脚本拦截不符合要求的提交:

  1. 编写Shell脚本示例:
#!/bin/bash
ALLOWED_DOMAIN="mycompany.com"

# 遍历推送的所有提交
while read oldrev newrev refname; do
  # 获取提交的作者邮箱
  git log --format='%ae' $oldrev..$newrev | while read email; do
    # 校验邮箱后缀
    if [[ ! "$email" =~ @$ALLOWED_DOMAIN$ ]]; then
      echo "ERROR: 提交邮箱 $email 不符合要求,仅允许使用 *@$ALLOWED_DOMAIN 格式的邮箱"
      exit 1
    fi
  done
done
exit 0
  1. 在GitHub Enterprise的「Admin settings」→「Hooks」→「Pre-receive hooks」中添加该脚本并关联目标仓库
  2. 启用钩子后,不符合规则的推送会被拦截

注意事项

  • GitHub公有云(GitHub Cloud)不支持自定义预接收钩子,仅能使用原生仓库规则
  • 可提示用户通过git config --global user.email "yourname@mycompany.com"配置本地默认邮箱,避免提交时出错

内容的提问来源于stack exchange,提问作者DAVID _

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:18:14