我有一个更改,有几个提交,例如:
- 最后
- 第二
- 第一
我收到了+2的合并请求,但不幸的是master已经移动,其中一个提交显示为"合并冲突",所以我不能一次提交所有提交。
然而,当我尝试在本地重新设置基准时,重新设置基准是微不足道的。而且,如果我在web界面上使用Rebase,它成功地解决了冲突。
然而,在当地重新定基数的问题是,我会失去+2票,不得不再次惹恼评审员。
web界面确实保留了我的+2票,但我还没有找到一种方法来同时重新调整所有提交的基础:我能做的最好的事情是:
- 在新主机上重新设置
first
的基础 - 用
Rebase on parent change
将second
重定在第一个之上 - 依此类推,直到最后提交
如果我试图直接在web UI上重新确定最后一次提交的基础,就像我在CLI中所做的那样,Gerrit警告我这将破坏关系链:
Rebase on top of the master branch (breaks relation chain)
我认为这意味着只有一个提交会在master上进行,而不是按照我的意愿重新设置base?
有没有办法在不失去我+2票的情况下一次重新调整基础?
在Gerrit 2.16.2上进行测试。
当您有一个带有多个补丁集(提交)的更改时,您不需要重新设置每次提交的基础,只需要重新设置最后一次提交的基础。实际上,您要提交(集成/合并)的只是最后一次提交,而不是整个链。每次修改补丁集时,都会创建一个新的提交来替换以前的提交。
如果你对这个概念感到困惑,最好阅读Gerrit文档中的Working with Gerrit:An example item。
回答您的问题:当您重新调整补丁集的基础时,Gerrit将根据项目的copyAllScoresOnTrivialRebase配置处理+1/+2票。如果为true,则在上传一个新的补丁集时,标签的所有分数都会被向前复制,这是一个微不足道的重新基准。如果重新基准是手动生成的,并且是使用Web UI推送或生成的,那么它的工作方式没有什么不同。如果您得到了不同的行为,请确保您没有更改提交消息。
如果提交消息与上一个修补程序集中的相同,并且如果它具有相同的代码delta作为上一个补丁集。
尝试
- git签出主机
- gitpull->这将最新的代码从远程master拉到本地master分支
- git签出您的branch_name
- git rebase origin/master
解决合并冲突并更新您的审查请求。
我认为没有办法做到这一点。编辑提交(rebase就是编辑)意味着提交需要新的审查。
根据我的经验,在最后一次提交完成并进一步提交之前,你不应该推送新的提交进行审查。