首页 > 解决方案 > 如何保持 Gerrit 提交历史与 git log 相同?

问题描述

我已经成功地将 git REPLACE & PUSH 推送到我的仓库以减少历史记录。

但是格里特仍然保留着整个历史。

例如

替换前:git 和 gerrit 中都有 commit 1, 2 ,3

替换后:我在 git中只提交了1,而 git clone 只显示了提交 1,这就是我想要的

gerrit 中仍有提交 1,2,3

那没有意义……为什么?以及如何清理 gerrit 历史记录以与 git log保持一致?

这是我的命令
$ git clone ssh://myrepo.git
$ HP=xxxx #get a commit Hash value as a history point
$ git branch history $HP
$ echo 'new starts here' | git commit-tree $HP^{tree} # return value as new base $NB
$ git rebase --onto $NB $HP
$ git push origin master -f

任何帮助表示赞赏。

标签: gitgerrit

解决方案


我认为您将 Gerrit 更改与 Git 提交混淆了。当您使用“git push origin master -f”时,您会绕过 Gerrit 将新的提交历史记录直接推送到 Git 分支(master)。

由于先前存在的提交而生成的 Gerrit 更改将继续存在。不幸的是,您无法在 Gerrit 更改合并后删除它们(只能删除打开或放弃的更改)。另一方面,这些更改不会对实际的 Git 存储库产生任何副作用,这显然应该如您所料。


推荐阅读