Completely removing a folder from git
本问题已经有最佳答案,请猛点这里访问。
要从Git中删除名为build的文件夹,我使用:
1 | git rm --cached -r build |
从这个答案中我学到了。
但是,iiuc,目录仍保留在git的数据库中。
我测试过这个问题:
执行时间:
1 | git rm --cached -r build |
.git目录的大小保持为7MB,这意味着取消跟踪和删除并没有改变git的历史记录,这是一种冒昧的做法。
如何彻底清除错误提交的目录,这些目录已提交了几次提交?
在我的例子中,因为我只是第三次提交,对项目的历史几乎不关心,所以我删除了.git文件夹并重新开始,但我想知道是否有更好的方法。
答案与从所有历史记录中删除一个文件相同(具有所有相同的警告),但不是指导过滤器删除一个文件,而是指示它删除从该路径开始的所有文件,例如,
请注意,在使用
1 | git filter-branch --tree-filter 'rm -rf src/folder' HEAD |
号
通常,您需要重写提交的历史记录,以便从所述提交中清除大文件。
一个好的工具是bfg repo cleaner:它比本地
1 | java -jar bfg.jar --strip-blobs-bigger-than 5M some-big-repo.git |
过滤完提交之后,您仍然需要应用git-gc/repack/prune,以便实际减小大小。