【问题标题】:GitLab - ignore specific files in target branchGitLab - 忽略目标分支中的特定文件
【发布时间】:2017-07-11 00:47:13
【问题描述】:

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

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

【问题讨论】:

    标签: git gitlab git-merge merge-strategy


    【解决方案1】:

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

    然后您可以版本和跟踪:

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

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


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

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

    【讨论】:

    • 非常感谢 Vonc。
    猜你喜欢
    • 2023-01-23
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2016-03-10
    相关资源
    最近更新 更多