如果还有第二个较新的评论,如何修改Gerrit中的评论问题

Adr*_*ish 14 git gerrit

仍在努力学习如何使用Gerrit及其过程.我在哪里做的步骤

  1. 首先change1推动gerrit审查HEAD:refs/for/develop
  2. 在同一个分支上处理其他事情,并推动change2gerrit审查HEAD:refs/for/develop

两个提交都有gerrit Change-ID行

所以现在我想解决问题,change1所以我做了

git checkout -b change1 <change 1's commit id>
Run Code Online (Sandbox Code Playgroud)

做出我的更改并提交(将Change-ID添加到提交消息)

git add .
git commit
Run Code Online (Sandbox Code Playgroud)

现在当我这样做

git push origin HEAD:refs/for/develop
Run Code Online (Sandbox Code Playgroud)

我明白了

 ! [remote rejected] HEAD -> refs/for/develop (squash commits first)
error: failed to push some refs to 'ssh://adrian@192.168.7.100:29418/CommunicationsLibrary'
Run Code Online (Sandbox Code Playgroud)

如何解决堆叠评论中的问题并将其发布到gerrit而无需创建另一个评论?

Tre*_*ell 17

如果您在Gerrit中有依赖性评论(也就是说,评论中的一个更改取决于同时审核的早期更改),并且您需要对之前的更改进行修改,则您实际上必须重新提交这两个更改(因为第二次更改取决于不同的"父"提交)

所以情况是你在主开发分支的一个分支中有两个提交,如下所示:

o master
\
 o Commit A (in review, requires change)
 o Commit B (in review, no changes required)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我通常做的是在第三次提交中进行Commit A请求的更改.我们的提交图现在看起来像这样:

o master
\
 o Commit A (in review, requires change)
 o Commit B (in review, no changes required)
 o Commit C (modifications to Commit A)
Run Code Online (Sandbox Code Playgroud)

现在我做git rebase -i master并重新命令Commit C在Commit A之后但在Commit B之前,然后将它压缩到Commit A.提交图现在看起来像这样:

o master
\ 
 o Commit A' (Commit A, incorporating the changes from Commit C)
 o Commit B' (the same changes made in Commit B, but applied to Commit A' instead of A)
Run Code Online (Sandbox Code Playgroud)

最后,git review(或者您用来向gerrit提交更改的任何命令)将这两个提交重新提交给Gerrit.

正是由于这样的复杂性,大多数人强烈建议在单独的分支中处理每个不同的更改,然后在提交给Gerrit之前压缩到单个提交,而不是需要处理这些类型的情况,其中您有依赖的更改被审查同时.

  • 一年后的更新:取代上面概述的程序,我现在只做一个`git rebase -i master`,并将Commit A的命令设置为"edit"(将Commit B的命令保留为"挑").这将使您处于变基模式,并在您的工作副本中提交A. 然后,您可以使用`git commit --amend`修改提交A. 一旦你完成修改提交A,你就可以`git rebase --continue`,它将重新应用提交B,你就完成了. (6认同)