2012-07-06 182 views
16

如果我在Gerrit中有一个更改的补丁集版本,似乎我只能提交最新的补丁集版本(因为只有那个人有必要的按钮)。有没有一种简单的方法来改为提交相同更改的旧修补程序集版本之一,只使用我在该Gerrit实例上的Web浏览器?通过Gerrit UI恢复到较早的补丁集版本?

我知道我可以从我的git客户端获取所需的补丁集版本,并将它作为又一个新的补丁集版本放在最前面,但是我希望避免在评论中多次使用相同的补丁集版本并围绕它进行讨论。

回答

11

不,对不起,这目前不可能。该设计假定最新的补丁集是开发人员将要审查和测试的补丁集,并且不能提交较旧的补丁集。他们也不能被审查/验证。如果您想使用较旧版本的修补程序集,则必须重新提交它以使其成为最新的修补程序集。为了避免没有新的变化错误做git commit --amend和git将创建一个新的sha1,这将很高兴地被Gerrit接受为一个新的补丁集。

+6

这不起作用:推送旧补丁集的提交时,出现“无新更改”错误。 – oberlies 2015-06-26 10:54:06

+1

这有点复杂。您需要实际恢复由所需补丁集引入的更改,然后将这些恢复修改为审核并重新提交。这会让你回到你想要的补丁集所代表的状态。如果你知道你在找什么,你可以用reflog实现,但是我必须把它留给真正的git向导。 – geekofalltrades 2015-06-26 19:44:16

+4

下面是一些可行的方法,虽然它可能有点瑕疵:在reflog中找到最新补丁集的HEAD状态,称之为X,以及要恢复的补丁集的HEAD状态,称之为Y. 'git diff HEAD @ {X} HEAD @ {Y} | git apply --index'。现在您已经进行了一些更改,撤消了Y和X之间所做的所有更改。执行'git commit --amend',然后重新提交审阅。您现在有了一个新的补丁集,可以让您回到所需补丁集的状态。 – geekofalltrades 2015-06-26 20:36:01

0

在Gerrit UI中,单击Patch Sets,然后在下拉菜单中,您会看到所有修补程序及其提交ID。只需点击提交你想在中间窗格中选择Revert

Gerrit patch sets

您也可以提交ID和结账/修改提交,然后发送审查再次

如果你想拉/取/樱桃选择一个特定的补丁集,然后点击Patch Sets右边的Download并复制所需的命令。在命令中你会看到一个这样的网址

ssh://[email protected]/branch.1 refs/changes/1/3456/4 
              ^

注意在最后一个位置的数字。这是补丁号码。因此,如果您想获得修补程序,请修改URL为ssh://[email protected]/branch.1 refs/changes/1/3456/2

-1

没有正确的方法可以仅使用Gerrit UI来执行此操作。樱桃选择“更改列表”的特定“补丁集”(例如,如果在更改列表中有15个补丁集并且想要恢复到补丁集#8)。从Gerrit UI获取所需修补程序集的樱桃选择命令。

运行樱桃挑选命令,并使用git commit --amend,然后推动您的更改。它会生成新的补丁集(对于上例#16)。