在父母改变时重新启动合并提交

时间:2014-05-29 00:20:38

标签: git merge gerrit

鉴于gerrit变更集取决于另外两个独立的变更集:

P1-
   \
P2----C

gerrit将此表示为与两个父母的合并提交。与普通的合并提交不同,它将包含与父母中的更改完全无关的重要更改。

父更改集在gerrit中更新,因此我们提交了P1'和P2',它们是P1和P2的修正版本,根据代码审查反馈进行修改。制作C'最简单的方法是什么?这是与父母P1'的合并提交。和P2',并包含与C?相同的变化(相对于其父项)

1 个答案:

答案 0 :(得分:1)

我到目前为止最接近的是使用rebasing来创建具有正确父级和提交的提交,但没有原始提交的内容:

git checkout C
git rebase --preserve-merges --onto P1' P1
git rebase --preserve-merges --onto P2' P2

...然后手动应用C中的所有更改,如git show C所示。有一种方法可以将git show(一个combined diff)的输出转换为普通差异,这样就可以实现自动化 - 我已将其作为一个单独的问题提出:Transform a combined diff into a patch