提取部分git存储库?

Rio*_*Rio 32 git repository extraction

假设我的git存储库具有以下结构:

/.git
/Project
/Project/SubProject-0
/Project/SubProject-1
/Project/SubProject-2
Run Code Online (Sandbox Code Playgroud)

并且存储库有一些提交.现在其中一个子项目(SubProject-0)变得非常大,我想将SubProject-0取出并将其设置为独立项目.是否可以从父git存储库中提取涉及SubProject-0的所有提交历史记录并将其移动到新的?

Chr*_*röm 37

请参阅http://git-scm.com/docs/git-filter-branch

我觉得你需要这样的东西

git filter-branch --subdirectory-filter Project/SubProject-0 --prune-empty -- --all
Run Code Online (Sandbox Code Playgroud)

在存储库的克隆中.

  • @Rio您可能还想使用`--prune-empty`选项来删除仅触及`Project/SubProject-0`的提交. (2认同)
  • 这对我也有用。但值得一提的是,这个过滤器分支现在似乎已被弃用,因为它打印消息:“git-filter-branch 有大量陷阱,生成损坏的历史重写。在继续中止之前按 Ctrl-C,然后使用替代方案过滤工具,例如“git filter-repo”” (2认同)