如何重写gerrit的历史?

时间:2013-06-27 09:02:51

标签: git gerrit

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

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

git status命令输出:

  

在分支主机上   你的分支和'origin / master'有分歧,   并分别有7和9个不同的提交。     (使用“git pull”将远程分支合并到你的)   无需提交,工作目录清理

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

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

  

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

您还需要使用git push标志运行-f,告诉git重写历史记录。

相关问题