从历史记录中删除移动的文

时间:2017-07-10 14:19:36

标签: git git-filter-branch

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

  1. 从“垃圾箱”获取所有文件
  2. 查找历史记录中的所有引用
  3. 从历史中删除他们的每一个概念
  4. 怎么做?

1 个答案:

答案 0 :(得分:4)

您可以使用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