3

我已经使用更新开发团队"ACHThesis/preamble.fmt"中概述的方法从我的 git 存储库中添加并随后删除了一个二进制文件(路径),并重写了 Git 存储库历史,删除了大文件。正如 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

二进制文件显然仍然存在。我怎样才能删除它?


我看过但没有帮助的问题

4

3 回答 3

2

简答

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

中等答案

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

长答案

看到这个问题

于 2013-05-16T13:11:29.753 回答
0

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

不过,我确信有一个更好的解决方案,所以我将把它作为“未回答”多留几天,希望有精通 git 的人出现。

于 2013-05-16T13:02:37.670 回答
0

我认为git gc默认情况下只删除超过 2 周的对象。也许您可以尝试使用该--prune选项重新运行它

git gc --prune=now
于 2013-05-16T10:17:01.637 回答