我试图在一个更大的项目中使用来自一个git repo(" FOO")的rootdir的15个目录。将在较大的项目中对这些文件进行更改,并将其拉回到" FOO"回购。我逻辑上希望git subtree split --rejoin
将这些目录放入" FOO"然后将该分支添加/拉到更大的项目。换句话说,我想在" FOO"中保留1-2个目录。 repo而不是将它们添加/同步到更大的项目。
但是,在查看git文档和SO线程时,git subtree split
(参见链接线程)似乎不支持此操作,除非我将每个目录设为或我使用的子树git filter-branch
重写历史记录。
Git subtree and multiple directories
通常git filter-branch
被建议作为一种解决方案,但这似乎会破坏任何同步回到原来的" FOO"回购。从git filter-branch --help
:重写的历史记录将具有所有对象的不同对象名称,并且不会与原始分支收敛。对" FOO"的任何更改回购结构(比如通过filter-branch
将15个目的地放在新目录下)是不可能的。
我是否坚持将每个目录视为子树?在较大的仓库中进行15次子树拆分(同步回" FOO"将花费大量时间。是否有任何技巧来优化这一点(例如,1通过大型回购提交但是为每个文件夹的提交创建一个分支?