【问题标题】: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 试一试,因为它只是我的另一个答案中的提交过滤器给你带来了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 2011-06-20
      • 2020-05-01
      相关资源
      最近更新 更多