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

时间:2017-07-11 00:47:14

标签: git gitlab git-merge merge-strategy

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

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

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

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

使用content filter driver通过 .gitattributes declaration 自动生成配置文件。

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

在您的本地配置中声明该内容文件管理器驱动程序后,它会自动在config为您生成context.getBeanDefinitionNames() 文件。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。