git - Gerrit: push 代码审查已在 Gerrit 上的提交

标签 git gerrit

我的工作场所开始使用 Gerrit 来管理我们所有的项目。我以前从未使用过 Gerrit。我正在尝试找出一个好的工作流程来使用它来提交代码以供审核。

我创建了一个分支foo。我做出了 promise ,并将其推送给 Gerrit。然后我从 foo 开始创建一个分支 bar,并对其进行了另一次提交。我也将分支 bar 推送到了 Gerrit。

我现在在分支bar:

$ git branch
* bar
foo

现在我想开始对从 barfoo 的 merge 进行代码审查。有人告诉我这个命令应该做到这一点:

$ 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 冠军为什么,他说据他所知,你不能 push Gerrit 上已有的代码审查代码,即使该代码位于不同的分支上。

看起来,如果我避免将分支 bar 推送到 Gerrit,我的问题就会消失,代码审查也会正常进行。 但我更希望能够推送我想要的任何 %&@# 而不会干扰代码审查。我喜欢推送分支。我喜欢将我的分支放在 Gerrit 上,因为这样我也可以将它们发送给其他人在网络界面上查看。

是否可以在 Gerrit 中进行代码审查,而不禁止我将分支推送到 Gerrit?

最佳答案

我认为你需要以不同的方式进行 merge
- 首先,在本地 merge 分支 - git checkout foo 然后 git merge origin/bar
- 其次,将 merge 提交从本地 foo 推送到远程 foo - git push gerrit HEAD:refs/for/foo

别忘了输入 changeId merge 提交。

一般来说,不需要对提交进行两次审查。您是否需要检查 merge 提交或 rebase 方法。如果您的分支不是特定的分支(例如开发与发布),请考虑使用 rebase

关于git - Gerrit: push 代码审查已在 Gerrit 上的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275866/

相关文章:

git - Visual Studio Code 和 Git 在我的 NAS 上阻止了我的 IP

git - 用 git 子模块替换了第三方代码,现在我不能切换分支

git - 复制 Git 存储库

git - 改变分支基地

git - `checkout -B` 与 `symbolic-ref`

git - 如何执行 'Undo pending changes' 的 TFS 等价物

git 推送错误 -> ! [远程拒绝] HEAD -> refs/master (ref 存在)

git - 将具有多个分支和标签的现有 git repo 导入 gerrit

git - 基于 github 项目获取本地 gerrit 和存储库工作(包括分支)

git - 如何阻止樱桃选择到 gerrit 上的特定分支