当我打开 Git GUI 时,会收到一条引用loose objects
的弹出消息。我做了git gc
并删除了该消息。
什么是loose objects
,我怎样才能防止再次发生这种情况?
答案 0 :(得分:129)
SHA表示的对象(blob,树和提交) - 810cae53e0f622d6804f063c04a83dbc3a11b7ca将存储在
.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca
(前两个字符分开以提高文件系统的性能,因为现在并非所有对象都存储在同一目录中)
如上存储的对象称为松散对象。
当你开始使用你的回购时,你大多都有松散的物体。随着数量的增加,它变得效率低下并且存储在包文件中。这些对象称为打包对象。
git gc
是您运行以打包对象(通常是不需要的松散对象,几周之后也会被移除,并且使用--prune=<date>
选项可以强制删除不再需要的松散对象。就像修改一个commit。不再需要旧的commit对象。)
答案 1 :(得分:36)
Git Book解释得非常好: https://git-scm.com/book/en/v2/Git-Internals-Packfiles
松散的对象是更简单的格式。 它只是压缩数据 存储在磁盘上的单个文件中。一切 对象写入单独的文件。