【发布时间】:2011-10-16 14:14:56
【问题描述】:
我有一个(直到现在)使用 git 来存储其依赖项的代码库。存储库本身is available here(警告:它是巨大的)。不用说,我需要从存储库历史记录中删除依赖项,以便将其缩减到合理的大小。
我首先使用David Underhill's instructions 从历史记录中删除lib 目录。然而,即使在这样做之后,存储库仍然超过 300M。发出 git prune 和 git repack 会有所帮助,但仍然超过 180M。
为了找到任何臃肿的斑点,我发出了
git verify-pack -v .git/objects/pack/pack-*.idx | grep -v chain | sort -k3nr | head
这些结果:
105526b5d3d398b9989d88c2f9fc2d1dc96a85b8 blob 35685609 33600527 31978828 d296935e6ac5f3f58b50c789394c9769116e9c34 斑点 35658016 33593241 112485744 50636f931180a32764edadd854968a971a083f8a blob 28360290 25897864 233390 b9e4dd37428e879a258f297b7f5bcfb9ba869695 blob 13108002 11640713 66661788 08d2720b2414aa07ce419b17d5f80c333c7313b7 斑点 12551621 11124009 89231035 6197a478a461275a0396f20c28487e9ae619a5f9 blob 11975135 11058259 148211988 1 50636f931180a32764edadd854968a971a083f8a 549eb0c73776fd0ede27a2fcb03366f76f45a13c blob 9136086 8166649 166451273 5bc0a0f04a7004bc16cfab1c091c6b369fb74049 斑点 9072616 8270262 80951514 741480238a6a6ce612cf089245dd46d6890fba9f blob 8858569 8080252 101294029 744226651c55b14c1aa8affb78fba4fdf02b577c blob 7412220 6766404 186825167
这就是我卡住的地方。我可以git show 这些 blob 并看到它们看起来非常像 jar 文件,但我不知道为什么它们仍在 repo 中。
find their filenames 的各种尝试都失败了。
git repack -a、git repack -ad和git repack -Ad似乎都没有效果。
【问题讨论】:
-
git ls-tree -r --long HEAD | cut -d" " -f4- | sort -r可能会对您有所帮助。用历史中的每个提交替换 HEAD 并剪切最大的文件(也许过滤掉 lib/ 中的那些),它应该会给你一个线索。