过滤器分支从git repo中删除文件后,文件仍保留在包文件中

时间:2013-05-16 09:53:53

标签: git

我已使用Update a development team with rewritten Git repo history, removing big files中概述的方法添加并随后从我的git存储库中删除了二进制文件(路径"ACHThesis/preamble.fmt")。正如gitbook所建议我也跑了

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc

实际上,大文件似乎不再被任何提交引用,如

所示
git log --pretty=oneline -- ACHThesis/preamble.fmt
(no output)

但是,当我用

查看存储库中的最大文件时
git verify-pack -v .git/objects/pack/pack-6136e671bba3772bdf40ba3306aa249d654
0a117.idx | sort -k 3 -n | tail -1
e4cf847b6815c9833d04f9a449286112718a3926 blob   6771554 2414394 6791333

并查看其身份

$ git rev-list --objects --all | grep e4cf
e4cf847b6815c9833d04f9a449286112718a3926 ACHThesis/preamble.fmt

二进制文件显然仍然存在。 如何删除它?


我看过的但没有帮助的问题

3 个答案:

答案 0 :(得分:2)

简答

该文件最终会自行消失。它永远不会通过网络发送,因为它不再可以从您的任何分支机构访问。如果您可以使用磁盘空间一段时间,请不要管它。

中等答案

git clone存储库到磁盘上的另一个位置,rm是原始存储库。

长答案

See this question

答案 1 :(得分:0)

我认为git gc默认只删除超过2周的对象。也许您可以尝试使用--prune选项

重新运行它
git gc --prune=now

答案 2 :(得分:0)

我最终得到的“解决方案”是在我执行了所有filter-branches之后克隆存储库 - 克隆的repo在打包时没有删除的二进制文件。

我确信有一个更好的解决方案,所以我会把这个作为“未答复”留下几天,希望有人能够得到一些精明的人。