git - 当父级发生变化时,重新确定 merge 提交的基准

标签 git merge gerrit

给定一个 gerrit 变更集,它依赖于另外两个独立的变更集:

P1-
   \
P2----C

gerrit 将其表示为与两个父级的 merge 提交。但与正常的 merge 提交不同,它将包含与父级中的更改完全无关的重要更改。

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

最佳答案

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

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 )的输出转换为正常的 diff ,这样就可以自动执行此操作 - 我已将其作为一个单独的问题提出: Transform a combined diff into a patch

关于git - 当父级发生变化时,重新确定 merge 提交的基准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23923881/

相关文章:

svn - Git 强制完全同步到 master

git - 如何从父克隆中的过去提交中获取 git 子模块关联的提交 ID?

git - 如何在 Git 中创建带有快照的编码教程

git - PR 提出后我可以添加提交吗?

svn - SVN合并对于某些修订不合并任何内容

mysql - SQL : Join similar tables (different column order, 不同字段名)合二为一

r - 如何组合基于两列的两个数据框?

ubuntu - Gerrit 缺少所有项目

triggers - 使用 Gerrit 触发器插件时,哪些环境变量会传递给 Jenkins?

gerrit - 通过提交消息搜索 Gerrit