如何保护GitHub分支的CODEOWNERS免被合并操作覆盖?
解决多分支合并时CODEOWNERS被覆盖的问题
当release分支合并到master时CODEOWNERS被覆盖,核心是要避免合并操作替换目标分支的CODEOWNERS配置,以下是几种实用方案:
方案一:合并过程中手动处理冲突
- 使用变基合并:在release分支执行
git rebase master,当Git提示CODEOWNERS文件冲突时,直接执行git checkout --ours .github/CODEOWNERS保留master分支的版本,解决完冲突后继续变基流程,最后推送到master分支。 - 普通合并处理冲突:如果习惯用普通合并,遇到CODEOWNERS冲突时,同样执行
git checkout --ours .github/CODEOWNERS保留目标分支的配置,再提交合并结果即可。
方案二:通过分支保护规则从权限层面限制
在GitHub仓库的「分支保护规则」中针对master分支做如下配置:
- 开启「Require pull request reviews before merging」,指定userM为必填审核人,任何修改CODEOWNERS的PR必须经过userM批准,防止误修改被合并。
- 开启「Restrict who can push to matching branches」,仅允许userM或指定团队修改master分支的CODEOWNERS文件,从权限上阻止意外覆盖。
方案三:配置Git合并策略自动保留目标分支版本
通过Git的合并策略,让CODEOWNERS文件在合并时自动保留目标分支的内容:
- 在仓库根目录创建或修改
.gitattributes文件,添加以下内容:.github/CODEOWNERS merge=ours - 这个配置会告诉Git,当合并涉及CODEOWNERS文件时,始终采用当前分支(目标分支)的版本,无需手动处理冲突。
内容的提问来源于stack exchange,提问作者hmozaffari
相关产品推荐
相关产品推荐

