3

我们有一个大项目,它开发了一个包含许多具有分层依赖结构的库的结构。

现在,转到另一个项目,我想将其分解为每个库一个 repo 和一个或多个特定于项目的 repo,但保留历史记录。实际上,这意味着将一个大存储库的子目录转换为单独的存储库,其依赖关系可能通过子模块或其他一些适当的机制处理。这种重组操作是否可以用 git 进行而不会造成太大的痛苦?

4

1 回答 1

2

这取决于。如果您想将新存储库作为子模块进行跟踪并重写历史记录以使您看起来一直在使用该子模块,那么您需要编写一个git filter-branch脚本来为所述子目录执行此操作。棘手的部分是在子模块中反映分支和合并。

如果您只想从现在开始执行此操作,则可以轻松地将特定路径中的提交移动到新存储库。只需在新分支上执行过滤器分支,并且只包含涉及更改的历史记录。创建一个新的存储库并仅获取该分支。您现在可以将此存储库添加为子模块,并从此时开始跟踪后续更改。

于 2012-09-10T22:39:05.470 回答