GitLab - 忽略目标分支中的特定文件

GitLab - ignore specific files in target branch

我在我的项目中使用 GitLab,我有一个非常具体的工作流程。我有 2 个分支“Dev”和“Release”,如下所示。当我从 Dev 向 Release 提交合并请求时,配置文件也被 Dev 分支的配置文件覆盖。

但理想情况下,这两个分支的配置文件必须不同。我尝试使用 merge=ours。但它没有达到我的目的,因为它不会覆盖,除非配置文件中存在冲突。我不想在 .gitignore 中添加这些文件,因为对这些文件的任何更改都不会在 Dev 分支中提交。有人可以指导我如何实现吗?

您只需确保 dev 和 master 的配置文件以不同的方式命名,并具有各自的历史记录。这样,合并将永远不会覆盖任何内容。

然后您可以进行版本和跟踪:

  • a config.tpl(带有占位符值的模板文件)。
  • 两个配置文件,一个给dev,一个给master
  • 一个脚本能够获取配置文件和模板文件,并生成 config 文件(保持未跟踪,私有)
  • a .gitignore 忽略生成的 config 文件
  • a .gitattribute 声明污迹内容过滤器(见下文)

配置文件的生成是通过 content filter driver, using a .gitattributes declaration 自动生成的。


(图片来自"Customizing Git - Git Attributes" from "Pro Git book"))

一旦您在本地配置中声明了该内容文件管理器驱动程序,它将在 git checkout 上自动为您生成 config 文件。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。