2011-04-18 22 views
150

当我打开Git GUI时,弹出消息提示loose objects。我做了git gc,并删除了该消息。Git GUI引用的“松散对象”是什么?

什么是loose objects以及如何防止这种情况再次发生?

+0

当它询问松散对象是否应该打包时,您可以在弹出消息中简单地单击**“是”**。 * Git GUI *会为你运行'git gc',并带有一个漂亮的GUI进度条(虽然大部分时间显示为卡住)。 – ADTC 2014-08-27 07:50:21

回答

107

与SHA的对象(斑点,树木,并承诺)说 - 810cae53e0f622d6804f063c04a83dbc3a11b7ca将储存在

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca 

(分割在头两个字符作为我们提高文件系统的性能不是全部对象存储在同一个目录中)

上面存储的对象称为Loose对象。

当您使用回购协议启动时,主要存在松散物体。随着数字越来越高,它变得效率低下,并且它们被存储在一个包文件中。这些对象被称为打包对象。

是运行打包对象(即不需要和几个老周也将被删除,并与--prune=<date>选项,您可以强制删除不再松动对象通常散装物品需要什么。就像当你修改一个不再需要旧的提交对象)

+3

'--prune'选项是默认启用的,并且由于'git gc'自动触发了常用的用法(例如'commit'),您通常不必担心这一点。我没有使用git gui,而且我也无法找到它在源代码中触发的位置,但是它可以执行自己的检查,或者拦截被调用的命令触发的'gc'。然而,这只是由正常使用引起的,无需担心。 – Cascabel 2011-04-19 02:22:11

+7

包装松散物品有什么缺点吗?如果没有,为什么Git不会自动执行它? – 2013-04-24 08:37:13

+9

我不认为它是自动发生的。我经常参与,但是'git gui'提到有5万个松散对象(并且一直在想为什么git的速度太慢了,大型项目超过4年没有手动gc) – Kevin 2013-05-09 14:20:32

相关问题