【发布时间】:2014-11-08 18:19:41
【问题描述】:
我正在尝试在一个更大的项目中使用一个 git repo(“FOO”)的根目录中的 15 个目录。将在较大的项目中对这些文件进行更改,并将其拉回“FOO”存储库。从逻辑上讲,我想将这些目录git subtree split --rejoin 放到“FOO”中的一个分支中,然后将该分支添加/拉到更大的项目中。换句话说,我想在“FOO”存储库中保留 1-2 个目录私有,而不是将它们添加/同步到更大的项目。
但是,在查看 git 文档和 SO 线程时,git subtree split 似乎不支持此功能(请参阅链接线程),除非我将每个目录都设为子树或我使用 @987654324 @改写历史。
Git subtree and multiple directories
通常建议将git filter-branch 作为解决方案,但这似乎会破坏任何同步回原始“FOO”存储库的操作。来自git filter-branch --help:重写的历史对于所有对象都会有不同的对象名称,并且不会与原始分支收敛。目前无法对“FOO”存储库结构进行任何更改(例如通过 filter-branch 将 15 个目录置于新目录下)。
我是否坚持将每个目录都视为子树?在较大的存储库中进行 15 次子树拆分(同步回“FOO”将花费大量时间。是否有任何优化此的技巧(例如,1 通过大型存储库的提交但为每个文件夹的提交创建一个分支)?
【问题讨论】:
-
较大项目的一次拆分需要 4 分钟。完成所有 15 个子树拆分只需不到一个小时。
标签: git