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

如何保留development分支内的特定文件且不合并到master分支?

仅允许指定文件存在于开发分支、禁止合并到生产分支的实现方案

方法1:使用.gitattributes配置合并排除规则(本地自动生效,适合个人项目)

  • 先在开发分支提交你需要保留的文件(比如sqlite数据库文件)
  • 在开发分支根目录创建.gitattributes文件,添加如下规则,多个文件可换行追加:
db.sqlite3 merge=ours
*.dev.conf merge=ours
  • 在本地Git配置中开启ours合并驱动,所有协作者都需要执行一次该命令:
    git config --global merge.ours.driver true
  • 切换到生产分支,手动删除一次上述需要排除的文件并提交:
    git rm db.sqlite3 && git commit -m "清理生产分支不需要的开发文件"
  • 后续从开发分支合并代码到生产分支时,Git会自动保留生产分支的状态,不会将开发分支的上述文件合并进来。

方法2:CI/CD校验拦截(仓库级强制生效,适合团队协作)

这是最稳妥的方案,不会因为本地配置遗漏导致规则失效:

  • 在GitHub仓库中配置 Actions 工作流,触发条件设置为所有向生产分支发起的PR触发执行
  • 工作流中添加校验逻辑,扫描PR的变更文件列表,一旦命中禁止进入生产分支的文件清单,直接将校验状态标记为失败
  • 开启生产分支的保护规则,要求PR必须通过校验才能合并,完全杜绝不符合要求的文件进入生产分支。

方法3:手动合并控制(适合临时少量合并场景)

  • 合并开发分支到生产分支时添加--no-commit参数,让合并流程停留在提交前的状态:
    git merge dev --no-commit --no-ff
  • 手动移除本次合并带入的不需要的生产分支文件:
    git rm --cached db.sqlite3
  • 确认所有变更符合生产分支要求后,再执行提交操作完成合并。

注意:不要将这类文件添加到.gitignore规则中,.gitignore是全局生效的,添加后开发分支也无法正常追踪提交这些文件,不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:30:02