如何在不在 Gerrit 中打开新评论的情况下将提交拆分为子提交

How to split a commit into sub commits without opening a new review in Gerrit

我正在参与一个开源项目。 该项目使用Gerrit代码审查系统检查提交的代码。

最近我接到一个请求,要将正在审核的提交拆分成更小的提交。 但是,我无法找到如何在不打开新评论的情况下拆分提交。

有什么方法可以拆分审查中的提交吗?

git rebase -i will do it.

要拆分最近的提交,首先:

$ git reset HEAD~

现在以通常的方式单独提交各个部分,根据需要生成尽可能多的提交。

如果它在树的后面,那么

$ git rebase -i HEAD~3

其中 3 是返回的提交次数。

如果它在树中的位置比您想数的要远,那么

$ git rebase -i 123abcd^

其中 123abcd 是您要拆分的提交的 SHA1。

当你看到变基编辑屏幕时,找到你想要拆分的提交。在该行的开头,将 pick 替换为 edit(简称 e)。保存缓冲区并退出。 Rebase 现在将在您要编辑的提交之后立即停止。那么:

$ git reset HEAD~

以通常的方式单独提交这些片段,根据需要生成尽可能多的提交,然后

$ git rebase --continue

不,您不能在没有其他更改(审查)的情况下将提交一分为二。在 Gerrit 中,每个提交都对应一个独立的更改(审查)。这不是问题,事实上,这是 Gerrit 中的设计方式,其中 "code review" 意味着在每个提交被接受到代码库之前对其进行审查。如果提交尽可能小,审查会容易得多。

要更好地理解 Gerrit 进程,请阅读 Gerrit User Guide and this example of working with Gerrit。我相信事情会变得更加清晰。