如何在gerrit上重写历史?

Rom*_*lle 5 git gerrit

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

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

git status命令输出:

在分支 master 上您的分支和“origin/master”已经分歧,并且分别有 7 和 9 个不同的提交。(使用“git pull”将远程分支合并到您的分支中)无需提交,工作目录干净

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

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

由于路径冲突,无法合并更改。请在本地对更改进行变基并上传变基提交以供审核。

我做错了什么?

Bra*_*rad 5

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

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