Gerrit工作流程 - 将单个提交推送到主题分支

时间:2013-07-22 10:38:49

标签: workflow commit gerrit

我想在不影响同一主题分支中的其他提交的情况下将单个提交推送到Gerrit。不幸的是,我没有Gerrit的测试实例来进行实验。

情境: 我已经为项目提供了一个主题分支,正在审核中,其他开发人员已经更新了部分内容。现在我希望在更新之后进行更改。

为此,我在我想编辑的提交中由其他开发人员提取更改,在本地执行交互式rebase以进行自己的更改,然后推送到Gerrit,确保Change-Id仍然相同。这会将新版本的文件添加到补丁集中以供审阅。

问题: 当我尝试将单个提交推送到Gerrit时,主题分支中的其他提交也被推送,覆盖其他开发人员的更改。

以下是我使用的语法:

git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master/my-topic-branch

我认为由于Gerrit创建的依赖项,主题分支中的其他提交也被推送。

这种方法是否会起作用,省略主题分支标题?:

git push gerrit 3089c9f56542461dce738a9aa17bb743ed36e038:refs/publish/master

我之前成功尝试过此方法,推送到特定的变更集:

git push gerrit a95cc0dcd7a8fd3e70b1243aa466a96de08ae731:refs/changes/12345

然而,在再次尝试这个时,我现在收到一个解包错误:

error: unpack failed: error Missing tree 9172313b907b160d15e260d5f7d51689f467b858

相关问题: 当我从Gerrit中提取其他开发人员的更改时,如何确保我已经提取了主题分支中提供的所有文件?如果我在主题分支中选择Gerrit中最顶端的更改,并使用web ui中所述的pull命令,则主题分支中的某些文件似乎在本地更新,但不是全部。我是否需要遍历topic-branch中的每个提交并发出相关的pull命令?

2 个答案:

答案 0 :(得分:1)

我不知道手的命令,但它会是这样的:

  1. 制作主题分支的新分支
  2. 将要添加到主题分支的提交合并到此新分支
  3. 将新创建的合并推送到gerrit

答案 1 :(得分:0)

你可以做到

  

git push origin:master

但首先你可能需要使用

来做一个rebase来处理相关的提交
  

git rebase -i

有关详细信息,请查看此处 http://blog.dennisrobinson.name/push-only-one-commit-with-git/