1

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

在此处输入图像描述

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

4

1 回答 1

1

您可以简单地确保您的 dev 和 master 配置文件的名称不同,并具有自己的历史记录。这样,合并将永远不会覆盖任何内容。

然后,您可以版本和跟踪:

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

配置文件的生成是通过内容过滤驱动程序自动生成的,使用.gitattributes声明

https://i.stack.imgur.com/tumAc.png
(图片来自“ Pro Git book ”中的“Customizing Git - Git Attributes”))

在本地配置中声明内容文件管理器驱动程序后,它将自动为您git checkout生成config文件。请参阅“最佳实践 - Git + 构建自动化 - 保持配置分离
” 中的完整示例。

于 2017-07-11T04:50:52.167 回答