我有一个(开始时)大小为 5.6G 的存储库:
aparkin@mymachine ~/repo (master)
$ du -d 0 -h
5.6G .
但是,这个 repo 包含许多不再需要在 repo 中的大型二进制文件。最初它们位于目录结构中的不同位置,但都命名为“tc.dat”。作为“清理”步骤,我创建了一个cruft
目录,并将git mv
它们全部放入这个杂乱无章的目录中,将它们的名称更改为tc.dat1
,tc.dat2
等。
然后我有5个这样的文件,tc.dat1
通过tc.dat5
然后我按照这个问题,并filter-branch
与清理步骤一起使用以删除目录中这些文件的所有实例cruft
。cruft
但是,这仍然在 repo 中留下了原始文件名(在移入之前)。然后,我重复了将它们从所有提交中的原始位置删除的步骤,并再次执行了清理步骤:
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
毕竟,如果我做一个
git log --all -- tc*.dat
我在我的历史记录中没有看到任何匹配项,这表明它们已被完全删除。但是,当我再次执行时du
,repo 的大小仍然为 5.6G。鉴于这些文件包含大约 0.5GB,我希望看到这个数字会下降。
我错过了什么?