GitLab合并分支时如何保留各自.gitlab-ci.yml文件不被合并?
合并分支时忽略指定文件的配置方法
可以实现该需求,分为长期自动生效配置和临时单次生效两种方案,具体操作如下:
长期自动生效配置
通过Git内置的合并驱动规则实现,配置完成后所有后续合并都会自动忽略.gitlab-ci.yml文件的变更:
- 在项目根目录新建/编辑
.gitattributes文件,添加如下规则:
.gitlab-ci.yml merge=ours
该规则的作用是告知Git,合并涉及.gitlab-ci.yml文件时,直接使用合并目标分支(此处为build分支)的文件版本,完全忽略源分支(dev分支)的对应变更,也不会触发合并冲突。
2. 开启ours合并驱动,执行以下命令:
# 全局生效(所有本地项目都适用) git config --global merge.ours.driver true # 仅当前项目生效,去掉--global参数即可 git config merge.ours.driver true
注意:如果使用GitLab在线合并请求(MR)功能,将写好的
.gitattributes文件提交到build分支后,平台侧的合并操作也会自动应用该规则。
临时单次合并生效
如果仅本次合并需要忽略该文件,不需要长期配置,执行以下操作即可:
# 切换到目标build分支 git checkout build # 合并dev分支,不自动提交也不快速合并 git merge dev --no-commit --no-ff # 强制保留build分支的.gitlab-ci.yml版本,覆盖合并带来的变更 git checkout HEAD -- .gitlab-ci.yml # 提交合并结果 git commit
内容的提问来源于stack exchange,提问作者YuSheng
相关产品推荐
相关产品推荐

