繁体   English   中英

git 过滤器分支不会删除我想要的所有文件

[英]git filter-branch doesn't delete all files i want

我正在尝试清理 latex 代码的 git 存储库,其中包含生成的 pdf 文件,因为这些文件导致 repo 膨胀到大小。30

从这里的答案中调整一下如何从 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以了解有关可以保留在磁盘上的内容的更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM