我们有两个并行发展的存储库:一个用于我们项目的代码,另一个用于该项目的测试。我希望将这两个存储库合并到一个存储库中,这样,当我回顾历史时,我仍然拥有这两个目录结构。
假设我们当前的结构如下所示,其中project
和tests
是两个独立的git存储库:
project
/src
/include
tests
/short
/long
我想以一个包含两个目录project
和tests
的git存储库作为结束。
我不能简单地使用this answer、this one或this site中描述的技术合并这两个存储库:它们导致存储库在合并之前有两个不同的历史,并且在签出过去的提交时,您有src
和include
,或者有short
和long
,但是您没有同时拥有当时出现的四个存储库。
如果我签出4个月前在project
中创建的提交,我希望看到project/src
和project/include
在此提交中出现的样子,但我也希望tests/short
和test/long
在(然后分开的) test
存储库中同时出现。
我知道两个存储库之间提交的顺序只取决于时间,可能不是很精确。但这对我来说已经足够了。当然,我知道我不能保留每个repo中的原始git ids。这很好,因为这两个repos实际上是从另一个RCS新导入的,所以没有记录任何地方的git id。
它应该可以一个接一个地签出每个存储库中的所有提交,按时间跨存储库排序,并提交结果文件。已经有工具可以做到这一点了吗?
发布于 2019-04-27 21:09:02
我认为你应该合并这两个存储库,创建两个分支(没有合并的git fetch
)。然后交互式地改变一个分支的基址,在每次提交时停止,并将相应的提交git cherry-pick
到当前分支中。然后继续交互rebase到下一次提交(这会保存“编辑过的”提交,而不做任何修改)。
也许这甚至可以是自动化的。您可以使用git rebase --interactive -x
在每次提交后执行git cherry-pick
,而不是交互式的rebase和手动选择。问题是如何找出什么承诺樱桃挑选。我认为应该是second-branch~count
。在编辑rebase-todo文件时,可以在交互rebase之前编辑计数。
https://stackoverflow.com/questions/55879108
复制相似问题