作为问题detach-subdirectory之前已经提出的问题的子集,并考虑到以下事实:即使对拆分和 merge git存储库的过程提出了很多问题,当存在子模块时,我找不到一个涉及拆分主题的问题。

因此,在以下情况下:

.git/
.gitmodules
folder/
    data/
    content/
        other_data/
        submoduleA/
        submoduleB/

我想获得两个具有以下结构的存储库:
.git/
data/


.git/
.gitmodules
content/
    other_data/
    submoduleA/
    submoduleB/

第一种情况不是问题,可以使用detach-subdirectory中描述的方法轻松解决。

第二没有那么多。子模块的存在以及.gitmodules包含folder/content/submoduleAfolder/content/submoduleB的完整路径的事实导致部分历史记录不一致,因为.gitmodules指的是不存在的目录结构(一旦使用了filter-branch)。

因此,我想知道是否有一种方法可以在不引起不一致的历史记录的情况下进行此操作。

最佳答案

我怀疑(未经测试)第二个git filter-branch将有机会为新存储库的每次提交修改.gitmodules内容。

但实际上是 git submodule split command was in discussion early 2009


git submodule split [--url submodule_repo_url] submodule_dir \
    [alternate_dir...]



但是,我在latest what's cooking中看不到它。
提议的补丁程序中的脚本可以使您了解更新.gitmodules文件所需的树重写类型。

09-03 23:34