我有一个大代码仓库,目前包含多个顶级子文件夹中的项目,比如 /a
、/b
、/c
和 /d
。
现在我想把这个仓库分成两个不同的仓库:一个包含 /a
和 /b
,另一个包含 /c
和 /d
。
我知道可以使用 git filter-branch --subdirectory-filter
提取单个目录,但似乎无法一次提取多个目录。
我也知道可以使用 git filter-branch --prune-empty --tree-filter
删除除两个目标目录以外的所有内容。但这样做感觉不太对,因为我需要手动指定可能存在的所有顶级目录。
是否有更好的方法从大型代码库中提取两个目录?
PS:当然,任何使用除 git filter-branch
之外的其他工具的好的解决方案都可以接受。;)
git filter-repo
的答案,因为它比git filter-branch
更易于使用和更安全。 - CharlesB