清理那些合并在一起的git重写历史?

时间:2015-03-29 16:37:11

标签: git github version-control

我有一个可以追溯到2007年的Git存储库。它最初是作为CVS仓库转换为SVN然后转换为Git。

几个月前,我做了一些filter-branch - 减少存储库大小,并将一些不相关的项目分拆到自己的存储库中。

结果是剩下的" main"存储库现在是一团糟,我有许多提交看起来相同(相同的消息和时间戳)但在树的并行轨道上不同的SHA1。

有没有办法将其重写为完整的线性历史记录?我想循环遍历历史记录,基本上只是在任何一天进行最后一次提交,并保留当天的提交,但结合当天的所有唯一提交消息。

这会给我一个线性的时间顺序历史。我理解在开发分支上进行的任何实验看起来都有些奇怪(好像我在master上进行了更改,然后将其退出)。没关系。

Git确实应该保留某种元历史记录,将重写和重新提交的内容追溯到原始提交。

1 个答案:

答案 0 :(得分:0)

毕竟有一个简单的解决办法。

我找了两个明显重复的提交(几个月前的一个里程碑式的生产版本,预先记录了所有过滤器分支的疯狂),并使用git replace将两个重复项放在一起。

所以现在旧的历史和最近的历史都是线性的,只有一个局部的疯狂膨胀,我只会留下。