目前我们有一个大型项目,由模块 A,B,C,D,E 组成。这些模块位于 github 上的同一项目存储库中,但位于不同的文件夹中 - 每个模块都在其自己的文件夹中。如果重要的话,项目由 Maven 管理。
最近我们决定将项目拆分为两个不同的实例 - P1 和 P2,因此它们将驻留在不同的存储库中。 P1 应包含模块 A、C、D,项目 P2 应包含 B、E。
所以现在我们认为至少有 4 个选项:
- 让项目保持原样。将相应的 Git 模块添加到 P1 和 P2,这样每个模块都将指向 parent 项目中的适当文件夹这将确保保留历史(我至少这么认为)。
- 为 P1 创建存储库,将内容 checkin 其中。然后将模块 B,E 移动到文件夹 client,然后创建将文件夹 client 作为模块导入 P2 仓库.我完全不知道这是否可能,但它也应该保留历史。
- 将所有内容 checkin P1 和P2,然后从P1 中删除模块B、E,并删除模块<来自 P2 的 strong>A、C、D。然后将 P2 作为 git 模块添加到 P1。这应该保留历史,但实际上太多了 - 所以模块 P2 将包含从 P1 到发散时刻的所有内容。如果可能,我们希望避免这种情况。
- 最后,从头开始,将所有内容都作为新项目进行检查。
我个人更喜欢第一个选项,但不确定这是否可行 - 例如,添加对外国项目子文件夹的依赖。
最佳答案
如果你想为每个子模块创建一个新的 repo,那么你应该查看 git-subtree .使用 split
选项创建仅包含子文件夹历史记录的新分支。然后您可以将它们推送
到新的远程作为master
分支。
如果您需要详细的用法,请联系我。
关于Git::将多模块项目拆分为 2 个模块并保留历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488057/