简要版本:
我如何将左图转换为右图?另外,我需要手动清除重复的提交(root2、a'、b')还是GC会在未来某个时候对它们进行修剪?
详细版本:
由于糟糕的CVS到git移植,当我将branch_1从CVS导入时,已经在git中创建了master,因此在同一个repo中出现了两个备选历史记录。 如图所示,branch_1的提交有些是唯一的,但有些是重复的。 有什么简单的方法可以解决这个问题吗?
我有一些想法,但不确定如何执行它们。 其中之一是完全删除branch_1并重新开始,但我不知道如何让git识别root1和root2是相同的,以便所有补丁都应用于同一行。 另一个想法是将f,g,h变基到b上,并以某种方式删除root2、a'和b'。 但我认为由于没有共同的祖先,普通的变基操作无法正常工作。
实际上,该分支的重复提交和唯一提交有数百个,因此需要非常耗时的手动操作。
git merge
而不是git rebase
,因为它保留了两个分支的内容(树)。git rebase
则只保留更改(差异)。 - Dietrich Eppb
到f
的边吗?如果这就是你所谓的“保留树”的意思,那么我不想要,因为这两棵树实际上是重复的。 - Hilikus