我最近跑git fsck --lost-found了我的存储库.
我希望看到几个悬空提交,我重置了HEAD.
但是,我惊讶地看到可能有数千条悬空blob消息.
我不相信我的存储库有任何问题,但我很好奇是什么原因导致这些悬空斑块?只有两个人在存储库上工作,我们没有做任何与众不同的事情.
我不认为它们是由旧版本的文件替换为新版本创建的,因为git需要保留两个blob以便它可以显示历史记录.
想想看,有一次我们错误地将一个非常大的目录(数千个文件)添加到项目中然后将其删除.这可能是所有悬空斑点的来源吗?
只是寻找洞察这个谜.
Way*_*Lue 51
上次我看到这个时,偶然发现了这个帖子,特别是这一部分:
你也可以在包中悬挂物体.当重新包装该包时,这些对象将被松开,然后最终根据上述规则到期.但是,我相信gc不会总是重新包装旧包装; 它将使新的包,直到你有很多的包,然后将它们结合起来的所有(至少这就是"GC --auto"会做,我不记得只是"混帐气相色谱法"是否遵循相同的规则).
所以这是正常的行为,并且最终会被收集,我相信.
编辑:根据丹尼尔,您可以通过运行立即收集它
git gc --prune="0 days"
Run Code Online (Sandbox Code Playgroud)
kni*_*ttl 16
无论何时add将文件写入索引,该文件的内容都将作为blob添加到Git的对象数据库中.当你reset/ rm --cached那个文件时,blob仍然存在(下次运行时它们会被垃圾收集gc)
然而,当这些文件的一部分提交,并决定稍后reset历史,那么旧的提交仍然从Git的引用日志到达,只会在一段时间之后被垃圾收集(通常是一个月,IIRC).这些对象不应该显示为悬空,因为它们仍然是从reflog中引用的.
| 归档时间: |
|
| 查看次数: |
19892 次 |
| 最近记录: |