我想将单个提交推送到 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 中的一些文件在本地更新,但不是全部。我是否需要遍历主题分支中的每一个提交并发出相关的拉取命令?