首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从Git存储库中删除blob

无法从Git存储库中删除blob
EN

Stack Overflow用户
提问于 2017-03-20 22:40:13
回答 1查看 469关注 0票数 3

我有一个本地唯一的存储库,它过去包含非常大的文件(扫描和一些数据库文件)。在某种程度上,我决定删除包含所有这些内容的目录,并重写历史以清除有问题的目录。

我最终得到了一个非常轻量级的存储库,但是.git目录仍然占用了1.3G的空间。只有一个包,我在这个包中至少识别了一个斑点,占用了很多空间。

我尝试了很多方法来清理存储库,包括各种git的调用,但都不起作用,甚至git forget-blob也不行。Git forget-blob告诉我“在repo历史记录中找不到”。

在这一点上,我迷失了方向。感谢您的帮助。

谢谢!

编辑:一些我觉得非常奇怪的附加信息。Git verify-pack向我展示了3个非常大的文件:

代码语言:javascript
复制
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

但是,我无法获得有关这些斑点的任何信息。这怎么可能呢?

代码语言:javascript
复制
git rev-list --objects --all  | grep 250129
zsh: done       git rev-list --objects --all | 
zsh: exit 1     grep --color 250129
EN

回答 1

Stack Overflow用户

发布于 2017-03-20 23:29:06

需要考虑的事情有很多:

  • 来自reflog的任何修订是否指向任何以前的修订(在重写之前)?
  • 任何存储对象是否指向任何旧修订?
  • 任何远程分支是否指向任何旧修订?

为了说服git删除一个对象,不应该有指向它的指针。另一件要考虑的事情是,对象保存在“包”中。我记得有一次我不得不“分解”我所有的包文件(也就是说,让git把所有的对象放到文件系统上),然后删除包文件,然后让git重新打包。

https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery

检查关于“删除对象”的部分。希望这已经足够好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42906491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档