【问题标题】:Remove moved files from history [duplicate]从历史记录中删除移动的文件[重复]
【发布时间】:2017-12-14 08:00:55
【问题描述】:

我有一个存储库,其中有一个“垃圾”文件夹,里面有很多垃圾文件(以前的开发人员出于某种原因想要存储它们)。我想将它们从 repo 中完全删除,因为它们占用了将近 1.5 GB 的空间。我已经看到了这样的问题:Remove folder and its contents from git/GitHub's history 但我的有点不同:最初“垃圾”文件在其他地方,所以我需要:

  1. 从“垃圾箱”中获取所有文件
  2. 在历史上找到它们的所有引用
  3. 从历史中删除它们的每一个概念

怎么做?

【问题讨论】:

  • 不完全清楚:您只是想从历史记录中删除垃圾箱文件夹及其中的所有文件,还是还想删除 之前移动到垃圾箱的文件> 他们被移到垃圾箱?在后一种情况下,检查旧版本可能会留下不完整的代码库。
  • (是的,后一种情况)同意,我会失去以前提交的稳定性,所以我有 3 个选项:a)忘记历史,创建一个新的 repo 并进行一次大的“初始提交” , b) 使用 BFG 从历史记录中删除大文件,c) 以某种方式从“垃圾箱”中彻底清除文件。我选择了后者。

标签: git git-filter-branch


【解决方案1】:

你可以使用BFG Repo-Cleaner

BFG 是 git-filter-branch 的更简单、更快的替代方案 从 Git 存储库历史记录中清除不良数据

更快:10 - 720x faster

更简单:BFG 并不是特别聪明,但专注于制作 上面的任务很简单

例子:

删除名为“myfolder”的文件夹:

bfg --delete-folders myfolder  my-repo.git

删除所有名为“id_rsa”或“id_dsa”的文件:

bfg --delete-files id_{dsa,rsa}  my-repo.git

删除所有大于 50 兆字节的 blob:

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

删除所有名为“.git”的文件夹或文件 - Git 中的保留文件名。当从 Mercurial 等其他源代码控制系统迁移到 Git 时,这些通常会成为一个问题:

bfg --delete-folders .git --delete-files .git  --no-blob-protection  my-repo.git

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2014-06-24
    相关资源
    最近更新 更多