Git:两​​个开发人员在同一个文件上的合并策略

时间:2018-08-23 05:38:32

标签: git gitlab git-merge merge-conflict-resolution

我对gitlab merge感到困惑。

是这种情况:

[公司回购]

  1. 假设gitlab.com/bfi/sandbox上的公司资料库
  2. 公司存储库具有分支机构master(生产快照)和test(质量检查快照)
  3. 每个开发人员必须将公司回购分叉到他们的回购工作中

[8月10日的功能请求]

开发人员需要完成两个功能:X将在功能1上运行,而Y将在功能2上运行。
因此,X fork公司仓库在feature_1上创建分支gitlab.com/x/sandbox
Y也派遣公司仓库,在feature_2上创建分支gitlab.com/y/sandbox

两者都在同一文件上工作:myfile.txtmyfile.txt的原始内容为空

[X于8月11日提交]

让我们在X的8月11日说:

  1. 将他的更改提交到x/sandbox:feature_1并为x/sandbox:test创建MR
  2. 创建从x/sandbox:testcompany/sandbox:test的合并请求

因此myfile.txt的内容成为

feature 1 line 1 by X

在这些地方:

  • x/sandbox:feature_1
  • x/sandbox:test
  • company/sandbox:test

质量检查开始测试功能1

[Y将于8月12日提交]

8月12日:

  1. Y将他的更改提交到y/sandbox:feature_2 y\sandbox:test。 myfile.txt的内容(在y上)是
feature 2 line 1 by Y

到目前为止一切顺利

  1. 将合并请求从y/sandbox:test提交到company/sandbox:test。在这里,他遇到了合并冲突,因此Y与X联系,并解决了冲突。 myfile.txt的竞争成为
feature 1 line 1 by X
feature 2 line 1 by Y

Y也与X联系,因此X将company/sandbox:test拉到x/sandbox:test中 此内容(2行合并)现在出现在

  • x/sandbox:test
  • y/sandbox:test
  • company/sandbox:test

y/sandbox:feature_2上出现一行(仅包含功能2)

另一个质量检查人员开始测试功能2(取自公司仓库)

[QA在8月13日发现了功能1(由X处理)的错误]

X处理该错误,因此在x/sandbox:feature_1上,myfile.txt的内容变为

feature 1 line 1 by X
feature 1 line 2 (bugfix) by X

请注意缺少的行。 feature 2 line 1 by Y不在这里,因此当X向x/sandbox:test提交合并的bug修正请求时,git会引发冲突。 解决冲突的方法是:

  • 使用我们的(feature 1 line 1 & feature 1 line 2
  • 使用THEIRS(feature 1 line 1 & feature 2 line 1
  • 手动合并两者(包含整整3行)

无论采用哪种分辨率,它都会更改源分支x/sandbox:feature_1

问题

X如何在8月13日实现以下目标:

  • x/sandbox:feature_1仅保留2行(feature 1 line 1 & feature 1 line 2
  • company/sandbox:test保留整行(特征1和特征2)

这种情况是2 QA必须在功能1和功能2上起作用。而功能1计划在不等待功能2的情况下首先上线,在这种情况下,如果X选择:   -我们的:质量检查将无法测试Feature2,因为公司回购中不包含它   -他们:质量检查人员将无法测试功能1   -手动合并以包含所有行:x/sandbox:feature_1将包含功能2的行。这意味着,如果功能1计划于8月14日启用,而功能2计划于8月20日发布,则8月14日的部署也将包含以下行:来自功能2。

那么

的策略是什么
  • X仅在8月14日部署feature 1(及其错误修正)
  • 您是在8月20日部署feature 2(包括feature 1)吗?

谢谢

0 个答案:

没有答案