【问题标题】:How to remove a file at the origin of multiple branches from the git history?如何从 git 历史记录中删除多个分支来源的文件?
【发布时间】:2015-01-18 02:18:54
【问题描述】:

我有一个在多个分支的原点提交的大文件。该文件后来被修改、移动或从分支中删除。问题是该文件对于 GitHub 来说太大了,所以我想从任何地方删除它(它的所有版本)。如何做到这一点?

我已经看到了修改包含此类文件 (https://stackoverflow.com/a/308684/42973) 的合并的方法,或者从(显然)单个分支 (https://stackoverflow.com/a/5563603/42973) 中删除文件的方法,但它们不适用于或适用于这种情况。

【问题讨论】:

  • 您可能正在这里寻找git filter-branch
  • @Jubobs:这确实是我链接到的答案中使用的。但是,那个答案对我不起作用(我想是因为条件就像我描述的那样)。所以,是的,看起来filter-branch 是个好主意,但我很好奇如何在我的情况下使用它。

标签: git revision-history git-rewrite-history


【解决方案1】:

使用BFG Repo-Cleaner,它是git-filter-branch 的更简单、更快的替代方案,专为从 Git 历史记录中删除不需要的文件而设计。

你应该仔细关注usage instructions,但核心部分是这样的:

$ java -jar bfg.jar  --strip-blobs-bigger-than 50M  my-repo.git

任何超过 50MB 的文件(不在您的最新提交中)都将从您的 Git 存储库的历史记录中删除。

BFG 通常至少比运行git-filter-branch10-50x,并且通常更易于使用。

全面披露:我是 BFG Repo-Cleaner 的作者。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2014-06-19
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多