当我打开Git GUI时,我得到一个指向松散对象的弹出消息。我做了git gc,这删除了消息。

什么是松散对象,我如何防止这种情况再次发生?


当前回答

具有SHA的对象(blob、树和提交)将存储在- 810cae53e0f622d6804f063c04a83dbc3a11b7ca

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(将前两个字符分开以提高文件系统的性能,因为现在不是所有对象都存储在同一个目录中)

按上述方式存储的对象称为松散对象。

当你开始回购时,你大多有松散的对象。当数量增加时,效率就会降低,它们被存储在包文件中。这样的对象称为打包对象。

 git gc

是你用来打包对象的(通常不需要的松散对象和几周前的对象也会被删除,使用——prune=<date>选项,你可以强制删除不再需要的松散对象。比如当你修改commit时。旧的提交对象不再需要。)

其他回答

Git Book解释得很好: https://git-scm.com/book/en/v2/Git-Internals-Packfiles

松散对象是更简单的格式。 它只是被压缩的数据 存储在磁盘上的单个文件中。每一个 对象写入单独的文件。

具有SHA的对象(blob、树和提交)将存储在- 810cae53e0f622d6804f063c04a83dbc3a11b7ca

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

(将前两个字符分开以提高文件系统的性能,因为现在不是所有对象都存储在同一个目录中)

按上述方式存储的对象称为松散对象。

当你开始回购时,你大多有松散的对象。当数量增加时,效率就会降低,它们被存储在包文件中。这样的对象称为打包对象。

 git gc

是你用来打包对象的(通常不需要的松散对象和几周前的对象也会被删除,使用——prune=<date>选项,你可以强制删除不再需要的松散对象。比如当你修改commit时。旧的提交对象不再需要。)