如何使用 gerrit 审查复杂的 cherry-picks
How to review complex cherry-picks with gerrit
我有两个分支:master
和 release
。现在我想从 release
分支中挑选提交 A
、B
、C
、D
回到 master
。这些提交不是连续的,所以我不能使用 ^
语法。我做到了:
- Cherry 通过
git cherry-pick A
、git cherry-pick B
等 分别挑选这些提交
- 这些挑选并不顺利:我不得不解决一些讨厌的冲突。
- 将它们压缩成一个巨大的 cherry-pick 提交
- 推送审核
现在,审核没有冲突文件列表。不可能看到冲突是什么以及我如何解决它们。结果,审稿人不得不重新审视这一巨大的变化并再次审阅所有内容。
这样可以做得很好吗?即:
- 将一组非连续的更改合并到一个分支
- 查看冲突列表
- 查看差异以解决冲突
看来没有办法了。我不得不使用辅助分支:
- 我通过
git merge-base master release
. 在 master
和 release
之间找到了基础合并提交
- 在此提交时创建了一个分支。
- 应用了我想要的所有 cherry-picked 提交。他们中的大多数应用得很好,没有冲突。
- 将此分支合并回
master
,解决了冲突。
这导致了可以在 gerrit 中轻松查看的合并提交。 Gerrit 允许根据 parents(即我的分支和 master
)和 auto-merge 来区分补丁。审阅者可以看到冲突是如何解决的。
我有两个分支:master
和 release
。现在我想从 release
分支中挑选提交 A
、B
、C
、D
回到 master
。这些提交不是连续的,所以我不能使用 ^
语法。我做到了:
- Cherry 通过
git cherry-pick A
、git cherry-pick B
等 分别挑选这些提交
- 这些挑选并不顺利:我不得不解决一些讨厌的冲突。
- 将它们压缩成一个巨大的 cherry-pick 提交
- 推送审核
现在,审核没有冲突文件列表。不可能看到冲突是什么以及我如何解决它们。结果,审稿人不得不重新审视这一巨大的变化并再次审阅所有内容。
这样可以做得很好吗?即:
- 将一组非连续的更改合并到一个分支
- 查看冲突列表
- 查看差异以解决冲突
看来没有办法了。我不得不使用辅助分支:
- 我通过
git merge-base master release
. 在 - 在此提交时创建了一个分支。
- 应用了我想要的所有 cherry-picked 提交。他们中的大多数应用得很好,没有冲突。
- 将此分支合并回
master
,解决了冲突。
master
和 release
之间找到了基础合并提交
这导致了可以在 gerrit 中轻松查看的合并提交。 Gerrit 允许根据 parents(即我的分支和 master
)和 auto-merge 来区分补丁。审阅者可以看到冲突是如何解决的。