5

我想将单个提交推送到 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 拉取其他开发人员的更改时,如何确保我已经拉取了主题分支中贡献的所有文件?如果我在 topic-branch 中选择 Gerrit 中最顶层的更改,并使用 web ui 中所述的 pull 命令,似乎 topic-branch 中的一些文件在本地更新,但不是全部。我是否需要遍历主题分支中的每一个提交并发出相关的拉取命令?

4

2 回答 2

1

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

  1. 创建主题分支的新分支
  2. 将要添加到主题分支的提交合并到这个新分支中
  3. 将新创建的合并推送到gerrit
于 2013-07-22T15:28:03.680 回答
0

你可以做

git push origin <thelonghash>:master

但首先您可能需要使用 rebase 来处理相关的提交

git rebase -i

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

于 2016-06-16T15:15:43.503 回答