Git GUI引用的“松散对象”是什么?

时间:2011-04-18 22:38:14

标签: git

当我打开 Git GUI 时,会收到一条引用loose objects的弹出消息。我做了git gc并删除了该消息。

什么是loose objects,我怎样才能防止再次发生这种情况?

2 个答案:

答案 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

  

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