git - 如何保持 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
任何帮助表示赞赏。
解决方案
我认为您将 Gerrit 更改与 Git 提交混淆了。当您使用“git push origin master -f”时,您会绕过 Gerrit 将新的提交历史记录直接推送到 Git 分支(master)。
由于先前存在的提交而生成的 Gerrit 更改将继续存在。不幸的是,您无法在 Gerrit 更改合并后删除它们(只能删除打开或放弃的更改)。另一方面,这些更改不会对实际的 Git 存储库产生任何副作用,这显然应该如您所料。
推荐阅读
- google-cloud-platform - GCP PubSub 重试退避时间
- python - Python搜索字符模式,如果存在则缩进
- javascript - TensorFlowJS 画布大小错误 - 如何显示图像?
- flutter - Flutter:如何使用 GetX 查询列表项
- linux - 如何解决“docker:来自守护进程的错误响应:OCI 运行时创建失败:无法检索 OCI 运行时错误”
- javascript - 如何使用单个 ExtJS 模型从数据库中保存、加载和删除?
- objective-c - NSAttributedString 中的慢速属性枚举
- android - 如何使用 Firebase 实时数据库在 android recyclerview 中添加加载更多功能
- python - Python:如何将模块中的对象导入本地引用?
- javascript - 是否有混淆/隐藏缩放会议 URL 链接的方法?