首页/开发/Git 与协作速查/CODEOWNERS 匹配优先级
协作与代码评审75 条

CODEOWNERS 匹配优先级

除「后定义优先」外,模式匹配按路径生效;全局 * 兜底时目录级规则要写在后面才能覆盖,团队与个人可混合指定。

Git 与协作速查开发更新于 2026-10-13

CODEOWNERS 优先级是什么

CODEOWNERS 决定哪些改动自动请求哪些人评审。匹配规则的关键是「后定义优先」:同一路径被多条模式命中时,取文件中最后出现的那一条。因此常见写法是首行用 * 兜底全仓,再按目录逐层写更具体的规则去覆盖它;团队与个人所有者可以混合指定,一条规则也可挂多个所有者。

基本信息

优先级同一路径多条匹配时取最后一条
兜底首行常用 * @团队 覆盖全仓
覆盖更具体的模式放在后面即可覆盖兜底
生效位置.github/CODEOWNERS、根目录、docs/ 三选一
触发改动涉及的文件自动请求对应所有者评审

典型使用场景

  • 全仓兜底加目录细分:* 兜底,关键目录另指团队。
  • 跨团队仓库:按目录把评审路由到对应团队。
  • 高风险文件守护:CI 配置、发布脚本指定专人把关。
  • 评审减负:把嘈杂目录交给专门团队,主线团队专注核心代码。
  • 合规要求:特定路径强制业务负责人评审后才能合并。
  • 新人友好:让改动自动找到最熟悉该模块的评审人。

覆盖顺序示例

覆盖顺序示例
*                 @org/maintainers          # 兜底:全仓默认请求
/services/pay/    @org/pay-team             # 覆盖兜底:支付目录
/services/pay/legacy/  @org/legacy-team     # 更具体者写在最后

验证匹配

验证匹配
# 本地无法直接求值,创建测试 PR 观察自动请求的评审人
gh pr view --json reviewRequests

常见模式

模式含义备注
*全仓兜底一般放第一行
/services/根下目录含子目录前导斜杠锚定根
*.js任意位置匹配(不加斜杠)扩展名类规则
docs/*仅单层目录不递归子目录
删改 CODEOWNERS 本身也属于评审范围,建议要求平台团队批准该文件;调整顺序后务必重新验证匹配结果;Fork 场景以目标仓库的配置为准。

易错点

  • 具体规则写在兜底之前会被覆盖;调整顺序后建测试 PR 看自动请求是否如预期。
  • 通配符写得太宽会请求过多团队评审,拖慢 PR 流转;按目录或扩展名收窄。
  • 路径写法与仓库目录不匹配(少前导斜杠、大小写差异)规则静默失效;用真实路径逐条核对;不确定就建草稿 PR 实测。
  • 只配团队不配个人,团队无人在线时无人评审;关键路径加个人所有者兜底。

数据来源与参考

  • GitHub Docs:About code owners(pattern precedence)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌