如何从git历史记录中删除孤儿提交

时间:2018-09-05 20:13:05

标签: git

我目前正在使用旧版代码库,并且git GUI工具的性能存在问题。

我想它的发生是因为项目一开始就有奇怪的提交树。

git commits history tree

如何删除a842c151e02e18提交(它们都没有父母)?

我只需要一点initial

2 个答案:

答案 0 :(得分:4)

您有多个根。这与孤立的提交不同。不幸的是,有多个根目录,但是Git旨在与它们正确配合使用,它们不会引起性能问题。 Linux内核本身有几个。

删除多余提交的唯一方法是完全重写存储库的整个历史记录,销毁它,并用一个新的,伪造的历史记录替换它,其中不包含不需要的历史记录。您可以通过创建嫁接并通过git filter-branch运行历史记录来做到这一点。

移植物的确切选择是微妙的。从图表上看,我没有发现明显的选择,因此我不确定我可以建议采用哪种嫁接方式,以使历史记录看起来像您想要的样子。

如果是我,我将有多重根基。我的个人存储库具有更多的根源(可能是20或30个根源),而且我使用的任何工具都不会出现速度慢的问题。

答案 1 :(得分:0)

您只需输入git checkout a842c15git checkout 1e02e18即可迁移到该分支
在该类型之后
git reset --hard HEAD~1,这将删除提交并前进1。
最后,通过git checkout branch_name

转到master分支或其他分支。