【问题标题】:Git Gui: Perpetually getting "This repository currently has approximately 320 loose objects."Git Gui:不断收到“这个存储库目前大约有 320 个松散对象”。
【发布时间】:2014-02-22 19:26:24
【问题描述】:

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

此存储库目前大约有 320 个松散对象。

然后我继续单击,然后我得到这个对话框:

问题是,当我再次打开 Git Gui 时,我得到完全相同的信息,又是大约 320 个松散的对象!好像点击Yes完全没有效果。

【问题讨论】:

标签: git git-gui


【解决方案1】:

我使用命令:

git gc --prune=now

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

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

【讨论】:

  • 不得不说这是对我有用的解决方案。奇怪的是,git gc --aggressive 没有删除警告(点击 UI 也没有,这似乎执行了一个简单的git gc)。
【解决方案2】:

只是简单地跳过弹出窗口,正如How to skip "Loose Object" popup when running 'git gui' 在接受的答案中所建议的那样,忽略了 Git 正在向您传达可能的性能问题这一事实。这应该可以通过从命令行运行以下命令来修复:

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

来自git help gc的输出:

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

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

--积极的

通常 git gc 运行速度非常快,同时提供良好的磁盘空间利用率和性能。此选项将导致 git gc 以花费更多时间为代价更积极地优化存储库。这个优化的效果是持久的,所以这个选项只需要偶尔使用;每几百个变更集左右。

这应该可以让提示暂时不会弹出。

【讨论】:

  • 奇怪的是,简单地从命令行运行git gc 为我修复了它。可能是git gui 运行类似于git gc --extra-unaggressive :)
  • git prune 似乎修复了它,而 git gc 没有。
  • 你一般不想用--aggressive运行;这会导致git 重新计算增量,这通常是低效且非常耗时的;请参阅this post--man 页面具有误导性。在这种情况下,可能只是简单的git gc 就足够了。
  • 必须使用--prune=all 来删除该消息。命令行上的git gc--aggressive--prune 选项都没有成功。
  • @JeffClites 您所指的文章(截至目前)已有 11 年历史,并指出“出于这个原因, --aggressive 可能会从手册页中删除,并作为未记录的功能保留为尽管。”。没有进一步挖掘,破碎的消息仍然存在似乎很奇怪。是否有可能在撰写文章后行为已被修改?
猜你喜欢
  • 1970-01-01
  • 2014-07-06
  • 2011-05-14
  • 2020-08-20
  • 1970-01-01
  • 2010-11-09
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多