Git Gui:永久获取“该存储库当前有大约320个松散对象。”


89

每当我在特定项目上启动Git Gui时,都会收到以下消息:

该存储库当前大约有320个松散对象。

在此处输入图片说明

然后,我单击“是”,然后显示以下对话框:

在此处输入图片说明

问题是,当我再次打开Git Gui时,我得到的消息完全相同,大约是320个松散的物体!好像单击“是”根本没有效果。


您可以发布的输出git count-objects -v吗?
CB Bailey


5
@TheCodeArtist谢谢,我在那里找到了答案。git gc根据此注释,从命令行显式运行对我有用
sashoalm 2014年

Answers:


81

只是简单地跳过弹出窗口,因为在运行“ git gui”时如何跳过“松散对象”弹出窗口暗示了公认的答案就忽略了Git正在向您传达可能的性能问题这一事实。通过从命令行运行以下命令可以解决此问题:

cd path/to/your/git/repo
git gc --aggressive

从输出git help gc

在当前存储库中运行许多内部管理任务,例如压缩文件修订版(以减少磁盘空间并提高性能)以及删除可能由先前的git add调用创建的无法访问的对象。

鼓励用户在每个存储库中定期运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。

-好斗

通常,git gc运行非常迅速,同时提供了良好的磁盘空间利用率和性能。这个选项将使git gc更加积极地优化存储库,但要花费更多时间。这种优化的效果是持久的,因此只需要偶尔使用此选项即可。每隔几百个变更集。

这应该使提示弹出一段时间。


19
奇怪的是,仅git gc从命令行运行即可为我修复它。可能会git gui像这样运行git gc --extra-unaggressive:)
sashoalm 2014年

38
git prune似乎修复它,git gc如果没有。
曼恩,2015年

1
您通常不希望与--aggressive;导致git重新计算增量,这通常是无用且非常耗时的;看到这篇文章-该man页面具有误导性。git gc在这种情况下,仅是简单就足够了。
杰夫·克里特斯

16
不得不用来--prune=all摆脱信息。既不git gc在命令行上也不在选项上--aggressive--prune也没有成功。
daw

1
@JeffClites您所指的文章(截至该日期)已有11年的历史了,并指出:“由于这个原因,攻击性很可能会从手册页中删除,并暂时保留为未记录的功能。” 无需进一步研究,似乎仍然存在残破的消息。在撰写本文时,是否有可能已修改了行为?
管道

3

我使用命令:

git gc --prune =现在

完成后不再有太多的松散对象警告。

参考来源:https : //git-scm.com/docs/git-gc


1
不得不说这是对我有用的解决方案。奇怪的是,它git gc --aggressive没有删除警告(也没有单击UI,这似乎很简单git gc)。
saeraphin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.