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

如何配置Git使编号重复的数据库迁移脚本合并时触发冲突?

实现方案说明

两种方式都可以实现需求,优先推荐Git配置+CI校验结合的方案,覆盖本地和远程的双重校验:

1. 本地通过Git配置实现合并冲突检测

Git支持自定义合并驱动,可以通过以下配置实现需求:

  • 首先在迁移脚本存放目录(假设为db/migrations/)下新增.gitattributes文件,指定该目录下的sql文件使用自定义合并规则:
    db/migrations/*.sql merge=check_migration_id
    
  • 编写编号校验脚本,核心逻辑为:提取两个待合并分支中所有迁移脚本的编号前缀,检测是否存在重复编号,存在重复则返回非0值,触发Git合并冲突。脚本可以直接存放在仓库中方便团队成员共用。
  • 配置Git自定义合并驱动,执行以下命令关联校验脚本:
    git config merge.check_migration_id.name "校验迁移脚本编号是否重复"
    git config merge.check_migration_id.driver /仓库内脚本路径/check-migration-id.sh %O %A %B
    

该方案的优势是开发者在本地合并代码时就能提前发现冲突,不需要等到推送到远程才暴露问题,缺点是依赖所有开发者本地完成Git配置,未配置的环境依然可能合入重复编号的脚本。

2. CI侧新增校验逻辑作为强管控

在CI流水线的PR校验阶段新增迁移脚本编号检查步骤,每次提交PR时自动扫描所有迁移脚本的编号前缀,只要存在重复编号直接阻断合并。
该方案不依赖开发者本地配置,是强制的安全防线,不会出现遗漏。


建议两种方案同时落地:本地配置让开发者提前发现问题,减少无效提交,CI作为最后一道校验保证仓库代码一定符合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:15:04