Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是「;“松散物体”;Git GUI指的是什么?_Git - Fatal编程技术网

什么是「;“松散物体”;Git GUI指的是什么?

什么是「;“松散物体”;Git GUI指的是什么?,git,Git,当我打开Git GUI时,我会看到一条弹出消息,它指向松散对象。我做了git-gc,删除了消息 什么是松散对象,我如何防止这种情况再次发生?Git书对此进行了很好的解释: 松散对象是更简单的格式。 它只是压缩数据 存储在磁盘上的单个文件中。每一个 对象写入一个单独的文件 SHA为-810cae53e0f622d6804f063c04a83dbc3a11b7ca的对象(blob、trees和committes)将存储在 .git/objects/81/0cae53e0f622d6804f063c

当我打开Git GUI时,我会看到一条弹出消息,它指向
松散对象
。我做了
git-gc
,删除了消息


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

Git书对此进行了很好的解释:

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

SHA为-810cae53e0f622d6804f063c04a83dbc3a11b7ca的对象(blob、trees和committes)将存储在

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca
(拆分前两个字符以提高文件系统的性能,因为现在并非所有对象都存储在同一目录中)

如上所述存储的对象称为松散对象

当你开始回购时,你大部分都有松散的对象。数字越高,效率就越低,并存储在包文件中。这样的对象称为压缩对象

 git gc

是打包对象时运行的操作(通常不需要的松散对象和几周前的松散对象也会被删除,使用
--prune=
选项,您可以强制删除不再需要的松散对象。就像修改提交时一样。不再需要旧的提交对象。)

默认情况下启用
--prune
选项,由于
git gc
是由常见用法(例如
commit
)自动触发的,所以您通常不必担心这一点。我不使用git gui,也找不到它在源代码中被触发的确切位置,但它要么自己进行检查,要么只是截取被调用命令触发的
gc
。不过,这当然没什么好担心的,只是因为正常使用而引起的。打包松散的东西有什么坏处吗?如果不是,为什么Git不能自动完成呢?我不认为它是自动完成的。我经常提交,但提到的“git gui”有50000个松散对象(并且一直想知道为什么git如此缓慢,在没有手动gc的情况下长达4年之久的大型项目)@Kevin手动运行
git gc
后,您的大型项目的性能是否有所提高?我认为应该改进,因为松散的对象效率很低,50000是一个非常大的数字。我还发现打包也大大减少了
.git
文件夹使用的空间。@LouisRhys,“当对象写入磁盘时,它通常是松散格式,因为这种格式访问成本较低。不过,最终你会希望通过打包对象来节省空间。”--从中的Git Book链接,当弹出消息询问是否应立即打包松散物品时,您只需单击“是”即可。Git GUI将为您运行
Git gc
,并带有一个漂亮的GUI进度条(尽管大部分时间显示为卡住)。