git - git filter-branch 不会删除我想要的所有文件
问题描述
我正在尝试清理包含生成的 pdf 文件的乳胶代码的 git 存储库,因为这些文件导致存储库膨胀到 300mb 的大小。
从这里的答案中调整一下如何从 Git 历史记录中删除文件?. 我尝试了以下命令:
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.pdf' HEAD
这减少了一点尺寸,但没有我希望的那么多。然后,当我尝试在这个问题的答案中找到的脚本时:如何在 git 历史中查找/识别大型提交?,要查找哪些文件对大小有影响,它仍然显示几个 pdf 文件。但是,如果我尝试在这个问题中找到的脚本:Which commit has this blob? ,它找不到任何包含该文件的提交。
我已经删除了除本地分支之外的所有分支。我没有将更改推送到遥控器。
这些文件是否有任何理由仍然存在于某个地方的历史记录中?我还可以尝试哪些其他事情?
解决方案
您可能仍然存在 blob,因为垃圾收集器没有收集它们。
尝试克隆本地存储库,并检查.git/
新克隆中目录的大小:
git clone myrepodir myclone
cd myclone
du -sh .git
# you can then remove that clone :
cd ..
rm -rf myclone
这将更准确地了解将推送或克隆多少数据。
如果您 100% 肯定您的filter-branch
操作后的内容就是您想要保留的内容,并且如果您不介意丢失您的 reflog(不再撤消,删除所有存储):您可以运行
git gc --aggressive --prune=now
有关git help gc
可以保留在磁盘上的内容的更多详细信息,另请参阅。
推荐阅读
- wpf - WPF TextBox 在多个字符后换行
- flutter - 状态更改不提示 ondidchange
- javascript - 如何隐藏 CSS 网格区域名称显示
- c++ - 试图理解模板和名称查找
- google-sheets - 如何根据列中的重复值为每个值设置不同颜色的单元格颜色
- reactjs - 超过最大更新深度。使用上下文和挂钩登录后
- linux - Splunkorwarder 使用 ansible
- visual-studio - MSBuild 未创建指定目录
- javascript - 以编程方式隐藏 Bootstrap 手风琴
- variables - 在 Ansible 变量块中重用基本路径变量