Sta*_*asM 5 git git-filter-branch
我正在尝试使用此问题中描述的配方拆分git repo ,但是有问题的git repo很大并且有数千个提交,因此当我尝试按照描述运行命令并且提交过滤器失败时命令行限制就会启动.如果我尝试分阶段(首先应用索引过滤器,然后提交过滤器),索引过滤器工作正常,但提交过滤器卡住并开始使用大量内存(3G +),所以我必须杀死它.知道怎么做吗?也许我在这里做错了什么?
对于那些没有阅读其他问题的人来说,任务是将一些目录从一个非常大的git repo拆分成另一个repo,同时保留与这些目录相关的历史记录.
我认为自从我写下这个答案后就添加了这一点:
--prune-empty某种过滤器会生成空提交,从而使树保持不变。此开关允许 git-filter-branch 忽略此类提交。不过,此开关仅适用于只有一个父级的提交,因此它将保留合并点。此外,此选项与 --commit-filter 的使用不兼容。尽管您只需要在提交过滤器中使用函数 git_commit_non_empty_tree "$@" 而不是 git commit-tree "$@" 惯用法来实现这一点。
因此,请尝试使用git filter-branch --index-filter '...' --prune-empty,因为这只是我的其他答案中的提交过滤器给您带来了问题。