【问题标题】:Splitting huge git repo拆分巨大的 git repo
【发布时间】:2011-02-02 23:51:04
【问题描述】:
我正在尝试使用配方described in this question 拆分一个 git 存储库,但是有问题的 git 存储库很大并且有数千次提交,因此当我尝试运行所描述的命令和提交时,命令行限制就会生效过滤器失败。如果我尝试分阶段进行(首先应用索引过滤器,然后提交过滤器),索引过滤器工作正常,但提交过滤器卡住并开始使用大量内存(3G+),所以我必须杀死它。知道怎么做吗?也许我在这里做错了什么?
对于那些没有阅读其他问题的人,任务是将几个目录从一个非常大的 git repo 拆分到另一个 repo,同时保留与这些目录相关的历史记录。
【问题讨论】:
标签:
git
git-filter-branch
【解决方案1】:
我认为这是在我写下这个答案后添加的:
--prune-empty
某种过滤器会生成空提交,从而使树保持不变。此开关允许 git-filter-branch 忽略此类提交。虽然,此开关仅适用于只有一个父级的提交,但它会因此保留合并点。此外,此选项与 --commit-filter 的使用不兼容。尽管您只需要在提交过滤器中使用函数 git_commit_non_empty_tree "$@" 而不是 git commit-tree "$@" 习惯用法即可实现。
所以用git filter-branch --index-filter '...' --prune-empty 试一试,因为它只是我的另一个答案中的提交过滤器给你带来了问题。