4

Gerrit 不小心引入了一些合并提交(配置了“必要时合并”选项),我想将它们从历史记录中删除。我知道团队使用 Git 时重写历史记录的缺陷,但在我们的案例中,开发人员不会因此受到影响,因为他们都没有在这个特定的存储库中进行本地更改。

我在git rebase -i本地做了一个,Git 自动删除了 Gerrit 的合并提交。我小心地删除了每个提交消息中以前的 Gerrit Change-Ids,Gerrit 提交消息挂钩添加了新的。

git status命令输出:

在分支 master 你的分支和 'origin/master' 已经分道扬镳,分别有 7 和 9 个不同的提交。(使用“git pull”将远程分支合并到你的)没有提交,工作目录干净

这就是我想要的(9 个提交减去 2 个合并提交)。

当我尝试推动 Gerrit 时,git push origin HEAD:refs/for/master我没有收到任何错误。但是,当我尝试在 Gerrit Web 界面上查看和提交时,我收到以下错误:

由于路径冲突,无法合并更改。请在本地重新设置更改并上传重新设置的提交以供审核。

我做错了什么?

4

1 回答 1

4

重写历史时,您不会推动审查(不要推动refs/for/*)。您需要直接推送到原始存储库 ( refs/heads/*)。这意味着您需要权限才能绕过 Gerrit 中的审核。我建议您暂时授予自己权限并在完成后将其删除,这样您以后就不会意外绕过审核。

您还需要运行git push带有-f标志的 git 来告诉 git 重写历史记录。

于 2013-06-27T14:07:30.980 回答