将git repo中的子目录拆分为它自己的repo

时间:2014-01-18 14:17:51

标签: git github refactoring git-submodules git-subtree

我有以下结构:

 my_main_project/
    my_lib/
       file1
       dir2/
           file2
    my_other_files

现在,my_lib已经到了应该是它自己的库的地步,应该是my_main_project

中的子模块

IE:

my_main_project/  (is repo)
    <my_lib>  (is sub module)
    my_other_files/

my_lib/ (is repo)
    file1
    dir2/
    file2

我理想地希望保留my_lib的git历史,原因很明显。

无论如何,我尝试了以下内容:Convert a git folder to a submodule retrospectively?

然而,它出现了这个错误

$ git filter-branch --subdirectory-filter '../my_main_project/my_lib' --prune-empty -- --all
> fatal '../my_main_project/my_lib' is outside repository

我做错了什么,需要做些什么才能让这个工作。我应该指出my_main_project在分支主机上,这是我希望移植的子目录的分支。

如果您需要补充信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

您链接到的帖子中的path/to/your/submodule克隆存储库中的子模块目录的路径(执行此命令时应该是新的目录),而不是原来的。根据你所写的内容来判断它应该只是my_lib

$ git filter-branch --subdirectory-filter 'my_lib' --prune-empty -- --all