我的工作场所开始使用Gerrit来管理我们所有的项目。我以前从未使用过Gerrit。我正在尝试找到一个良好的工作流来使用它提交代码进行审查。
我创建了一个名为foo
的分支。我在它上面做了一个提交,并将其推送到Gerrit。然后,我开启了一个从foo
开始的bar
分支,并在其上进行了另一个提交。我也将bar
分支推送到了Gerrit。
现在我在bar
分支上:
$ git branch
* bar
foo
现在我想对从bar
合并到foo
的代码进行审查。有人告诉我这个命令可以实现:
$ git push gerrit HEAD:refs/for/foo
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Processing changes: refs: 1, done
To ssh://ram@gerrit/acme/my_project
! [remote rejected] HEAD -> refs/for/foo (no new changes)
error: failed to push some refs to 'ssh://ram@gerrit/acme/my_project'
正如你所看到的,我遇到了错误
(没有新更改)
。我问我们当地的Gerrit专家是为什么,他说据他所知,即使该代码在不同的分支上,也不能将已经在Gerrit上的代码推送进行代码审查。看起来如果我不将分支
bar
推送到Gerrit上,我的问题就会消失,代码审查也会起作用。但我更喜欢能够随意推送任何内容而不会影响代码审查。我喜欢推送分支。我喜欢把我的分支放在Gerrit上,这样我也可以将它们发送给其他人在Web界面上查看。是否有可能使Gerrit中的代码审查工作,而不禁止我将我的分支推送到Gerrit上呢?
foo
的所有更改都已提交了吗?根据你描述的,预计应该是一个快进推送。但是它失败了。 - ElpieKay