我需要做一个非常大的git rebase来重新组织所有的存储库。为了保留我的树,我使用了git rebase --preserve-merges --onto master bf40caa develop
一开始一切正常,所有合并都会保留并且工作正常,但是,在源代码树中我留下了以下树:
(很明显,d25b5ad是初始提交,并且在此之前没有更多提交)
那是因为,尽管d12020e
父亲是b0427f6
,但由于他们是在同一时间创建的,我们会失去订单。我知道这可以通过更改为ancestor order
而不是date order
来解决,但我想知道是否有某种方法可以保持这些提交的顺序...也许在重新定位时在提交之间添加1秒的延迟?我怎么能这样做?
编辑:@Enrico Campidoglio,不,这不是其他问题的重复......以这种方式做得更糟糕......让我们更详细一点:
在这种情况下,我有一个拥有两个模块的大型存储库。我们从一个模块(我们称之为A
)开始,一旦它被“完成”,“我们就开始在另一个模块中使用另一个模块(让我们称之为B
)”。然后我们决定将这些模块中的每一个拆分到它们自己的存储库中,所以我想要做的就是将所有树推到A
完成的地方到模块-A-repository,然后推送“仅”模块B
提交模块-B-repository。
问题是我们不能这样做,因为B
的第一次提交取决于A
留下的整个树。所以我做了一个包含项目状态的孤立提交,就像A
完成时一样(这个提交是截图中的“初始提交”)并且B
的rebase提交到了这个提交。
然后请注意,如果我执行可能的重复操作,则无法解决此问题,因为此Initial commit
已“完成”,这是在第一次提交B
之后的方式。
但是,现在我看到还有另一种解决方案:在第一次提交Initial commit
之前将此B
日期设为一,然后运行“可能重复”的解决方案。