当提交依赖于代码审查中的另一个提交时,避免合并冲突

时间:2019-09-28 07:08:46

标签: git gerrit

我在Git中有以下树:

      A new_branch
     /
B---C---D---E master

A正在使用C中的更改。 C在Gerrit的远程主机上,正在等待代码审查。

现在将哪种方法理想地将A推送到远程主服务器上 Gerrit没有引入任何合并冲突?

2 个答案:

答案 0 :(得分:0)

理想的方法是不在提交C中建立提交A,因为它仍在等待代码审查。您只能将工作基于合并(提交)的提交。因此,在您的示例中,您应该像这样与C并行工作:

  A new_branch
 /
B---C---D---E master

实际上,如果您说提交C仍在等待代码审查,那么这是绘制架构的正确方法:

  A new_branch
 /
B master
 \
  C---D---E waiting for review

如果您确实需要基于提交C进行工作,那么您将像往常一样使用Gerrit:

$ git push origin HEAD:refs/for/master

但是您需要记住,如果在审阅过程中更改了提交C,那么您需要为新提交C'重新设置提交A的基础,然后才能合并到主提交中。

答案 1 :(得分:0)

这取决于您习惯于与审稿人一起工作。

在关系链中多次提交审阅并不少见。 您唯一需要记住的是在此处正确突出显示关系链。例如,在提交消息[<commit-ID>] (<child-ID>) <message>中。

恕我直言,这是处理诸如以下场景的最佳方法:

  • 提交B:正常功能
  • 提交C:便捷的插件库
  • 提交A:功能依赖于便捷的插件
  • commit D:依赖于便捷插件的其他功能