我有一个仅限本地的仓库,里面曾经包含非常大的文件(扫描和一些数据库文件)。某个时刻,我决定删除包含所有这些文件的目录,并重写历史记录以消除相关目录。
最终,我得到了一个非常轻量级的仓库,但是.git目录仍然占用了1.3G的空间。只有一个pack,我至少找到其中一个blob占用了很多空间。
我尝试了很多清理仓库的方法,包括各种git gc调用,但是没有任何作用,甚至包括git forget-blob。Git forget-blob告诉我“在仓库历史中未找到”。
此时,我迷失了方向。感激任何帮助。
谢谢!
编辑:还有一些我觉得非常奇怪的附加信息。Git verify-pack向我显示了3个非常大的文件:
然而,我无法获取有关这些数据块的任何信息。这怎么可能?
最终,我得到了一个非常轻量级的仓库,但是.git目录仍然占用了1.3G的空间。只有一个pack,我至少找到其中一个blob占用了很多空间。
我尝试了很多清理仓库的方法,包括各种git gc调用,但是没有任何作用,甚至包括git forget-blob。Git forget-blob告诉我“在仓库历史中未找到”。
此时,我迷失了方向。感激任何帮助。
谢谢!
编辑:还有一些我觉得非常奇怪的附加信息。Git verify-pack向我显示了3个非常大的文件:
git verify-pack -v .git/objects/pack/pack-5cc03e9fbdbdff4ce1bbeb43c55c3e17875f2bd7.idx| sort -k 3 -n | tail -3
4983118ae60be35299b153dc5850134329f6ddf0 blob 7336960 2000979 615935480
5c810dfffa6a033631596218c43a7360cf2aff10 blob 12455669 1197771 6330554
25012927d95cf3bd15f2a8cb30da2c4f4b988e82 blob 105476096 83834099 532101381
然而,我无法获取有关这些数据块的任何信息。这怎么可能?
git rev-list --objects --all | grep 250129
zsh: done git rev-list --objects --all |
zsh: exit 1 grep --color 250129
forget-blob
不是标准的 Git 命令,所以它一定是你安装的某个东西(也许是从这里安装的?)。如果是这样的话,那么链接的脚本似乎有一个 bug,但是这个 bug 应该会保留 blob,这样第二次运行git forget-blob
也会假装删除它,在我想到的情况下。 - torekgit repack -A -d
,Git 将无法重建包以丢弃不可访问的对象。 - torek