3 回答
TA贡献1851条经验 获得超3个赞
我最近把错误的远程存储库拉到了本地(git remote add ...和git remote update)。删除不需要的远程引用,分支和标签后,我的存储库中仍然有1.4GB(!)的浪费空间。我只能通过克隆来摆脱它git clone file:///path/to/repository。请注意,file://克隆本地存储库时会产生一些差异 - 只会复制引用的对象,而不是整个目录结构。
编辑:这是Ian的一个班轮,用于重新创建新回购中的所有分支:
d1=#original repo
d2=#new repo (must already exist)
cd $d1
for b in $(git branch | cut -c 3-)
do
git checkout $b
x=$(git rev-parse HEAD)
cd $d2
git checkout -b $b $x
cd $d1
done
TA贡献1817条经验 获得超6个赞
git gc已经做了git repack所以没有任何意义在手动重新包装,除非你要传递一些特殊的选项。
第一步是查看大多数空间(通常情况下)是否是对象数据库。
git count-objects -v
这应该会报告存储库中有多少个解压缩的对象,它们占用了多少空间,有多少包文件以及它们占用了多少空间。
理想情况下,在重新打包之后,您将没有解压缩的对象和一个打包文件,但是当前分支不能直接引用的某些对象仍然存在和解压缩是完全正常的。
如果您有一个大包装并且想知道占用空间的是什么,那么您可以列出构成包装的对象以及它们的存储方式。
git verify-pack -v .git/objects/pack/pack-*.idx
请注意,verify-pack它采用索引文件而不是包文件本身。这给出了包中每个对象的报告,它的真实大小和包装大小,以及关于它是否已经“完整”的信息,如果是,那么三角链的起源。
要查看存储库中是否存在任何异常大的对象,您可以在第四列的第三列(例如| sort -k3n)上以数字方式对输出进行排序。
通过此输出,您将能够使用该git show命令查看任何对象的内容,尽管无法准确查看引用该对象的存储库的提交历史记录中的位置。如果您需要这样做,请尝试这个问题。
- 3 回答
- 0 关注
- 906 浏览
添加回答
举报