我已使用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
二进制文件显然仍然存在。 如何删除它?
我看过的但没有帮助的问题
答案 0 :(得分:2)
该文件最终会自行消失。它永远不会通过网络发送,因为它不再可以从您的任何分支机构访问。如果您可以使用磁盘空间一段时间,请不要管它。
git clone
存储库到磁盘上的另一个位置,rm
是原始存储库。
答案 1 :(得分:0)
我认为git gc
默认只删除超过2周的对象。也许您可以尝试使用--prune
选项
git gc --prune=now
答案 2 :(得分:0)
我最终得到的“解决方案”是在我执行了所有filter-branches
之后克隆存储库 - 克隆的repo在打包时没有删除的二进制文件。
我确信有一个更好的解决方案,所以我会把这个作为“未答复”留下几天,希望有人能够得到一些精明的人。