要从git中删除名为 build 的文件夹,请使用:
git rm --cached -r build
我从这个answer中学到了。
但是,IIUC,该目录仍保留在git的数据库中。
我测试了这个问题:
执行:
git rm --cached -r build
.git 目录的大小仍然是7mb,这意味着未跟踪和删除并没有改变git历史记录,而是应该擅自改变。
完全清理错误提交的目录的方法是什么,该目录已经提交了几次提交?
在我的情况下,因为我只是在我的第三次提交而没有关注项目的历史,我删除了 .git 文件夹并重新开始,但我想知道是否有更好的方法
答案 0 :(得分:2)
答案与从所有历史记录中删除单个文件(具有所有相同的警告)相同,除了指示过滤器删除一个文件,而不是指示它删除以该路径开头的所有文件,例如,git rm --cached -rf path/to/directory
作为--index-filter
git filter-branch
。例如,请参阅this answer至How to remove/delete a large file from commit history in Git repository?另请参阅Completely remove file from all Git repository commit history。
请注意,在使用git filter-branch
(您应该在克隆上执行此操作)之后,缩小存储库的最简单方法 - 现在最多两倍 commit,因为过滤器不能改变现有的提交,只能将它们复制到更正的新提交 - 是克隆过滤的克隆。
答案 1 :(得分:1)
通常,您需要重写提交历史记录,以便从所述提交中清除大文件。
一个好工具是BFG Repo cleaner:它比原生git filter-branch
java -jar bfg.jar --strip-blobs-bigger-than 5M some-big-repo.git
一旦您过滤了提交,您仍然需要应用git gc/repack/prune才能使大小真正下降。
答案 2 :(得分:1)
git filter-branch --tree-filter 'rm -rf src/folder' HEAD
git rm
仅从工作树中删除