我正在尝试确定在Gerrit上使用与我们的工作流程相匹配的多个分支的正确方法。
我们现在与分支机构合作的方式是:我们拥有主人和专业人士。特色分支。 Master是我们想要打磨并准备发布的分支,而功能显然是一个密集工作领域。现在,在我们的特殊情况下,每当有人处理错误修复时,他们都会:
现在我理解樱桃选择的方式,它选择单独的提交并将其合并到当前的更改。如果是这种情况,我希望最终没有合并冲突,事实上这个工作流程只与GIT完美配合。然而,Gerrit很可能是由于它的本质(分支不是以本地方式远程合并并获得不同的sha标签)最终列出了大量冲突文件。
现在,我通过应用合并策略(我们的功能,他们的主人)解决了所有这些问题,但它感觉不对:如果没有传播任何东西,它就会被丢弃。
我的问题是:是否有安全工作流程,类似于上面的工作流程,最终会产生与gerrit的干净合并?
答案 0 :(得分:9)
我想说,在这种情况下,合并比樱桃选择更好。
一个樱桃选择添加相同的更改,但不是相同的提交。因此,虽然源代码在樱桃选择和合并上是相同的,但 git tree 是不同的。当树不同并且您稍后进行合并时,git会认为您之前所选择的提交缺失并尝试合并该更改,即使实际代码已经存在。这可能是你遇到很多冲突的原因。
我会提出另一种工作方式。
答案 1 :(得分:0)
我有点困惑,因为这个流程应该可以正常工作。如果其他用户在审核/验证/提交错误修复之前提交更改,则可能会导致合并冲突,但这种情况应该很少见。
如果你:
一切都会好起来的。发生合并冲突的唯一方法是其他用户是否在步骤1和5之间上传和提交更改。您是否看到了不同的行为?你能提供更多细节吗?