将本地合并推送到 Gerrit Code Review

Push local merge to Gerrit Code Review

我对 Git/Gerrit 比较陌生。 我不得不为客户解决我们软件旧版本中的一个错误。我将本地 Git 重置为与此版本对应的提交,然后创建了一个新分支(我们称之为 C),解决了错误并在本地新提交了更改分支。最后我切换到Master并将新分支C合并到这里。所以情况是这样的:

c1-> .. ->cx->cy (version of the custormer)->..->cz (Master/Origin)----->ck (merge commit)
               |                                                        ^
               ->cn (branch C) (bug fix)--------------------------------|

我使用 Eclipse 作为编辑器,使用 eGit 来管理 Git 提交。所以我将我的存储库推送到 Gerrit。我预计只有提交 ck 被推送(这是 Master 分支上唯一的新提交)但是 cn 也被推送了。 我在 Gerrit 上放弃了 cn 并且 ck 被标记为 +2 并提交了,但现在它处于 pending 状态,我想因为它被标记为 depending在废弃的 cn commit.

我想在Gerrit master上合并cn,怎么办?在这种情况下,正确的行为方式是什么?

谢谢

当您推送合并提交 ck 进行审核时,您也会推送 cn 进行审核,因为它尚未在存储库中。 Gerrit 为每个尚不存在的提交创建一个新的 'change'。

有两种方法可以解决这个问题。

  1. 按原样推送 cn(基于 cy),然后在合并时 Gerrit 将为您创建合并提交(假设您使用 'Merge if necessary'策略)。

  2. Rebase cn 到 master 分支的最新头部并再次推送它。

要选择选项 1,只需恢复您放弃的 cn 版本,然后查看并合并它。

对于选项 2,恢复选项 1 中的更改,然后在本地重新设置基准并再次推送,或者使用 UI 上的 'Rebase' 按钮重新设置基准。

在这两种情况下,合并提交 ck 都可以放弃。