0

在某个时刻使用远程存储库时,我在运行时开始收到此信息git fetch origin

在后台自动打包存储库以获得最佳性能。

有关手动内务管理,请参阅“git help gc”。

警告:最后一次 gc 运行报告了以下内容。请更正根本原因并删除 .git/gc.log。

在删除文件之前不会执行自动清理。

警告:无法到达的松散对象太多;运行 'git prune' 删除它们。

这事儿常常发生。我找到了git gc应该有帮助的地方,但它只能工作一次(或似乎工作) - 在此之后,git fetch origin我得到了

在后台自动打包存储库以获得最佳性能。有关手动内务管理,请参阅“git help gc”。

后来情况又重复了。我还尝试删除 .git/gc.log - 它没有帮助。

我的 git 技能真的很有限。为什么我会收到此警告以及如何长期解决此问题?

4

1 回答 1

2

这个特殊问题是由于 Git 中的一个错误(在 2.20.0 中首次应用了一个修复:请参阅commit3029970275b473dbf62149887a19a6b4879528d7,它很好地描述了正在发生的事情,但另请参阅commit095c741edd1d9604b6c285000a836721fd69f051,它具有贡献效果并在吉特 2.17)。如果你有错误版本的 Git,它会让太多松散的对象随着时间的推移而积累。1 您可以并且应该将您的 Git 版本升级到不会让这些对象累积得如此糟糕的版本,但是现在,当您对存储库不做任何其他事情时git prune,请继续手动运行。然后在修剪完成时手动运行。您可能还需要运行。git gcrm .git/gc.log

(问题会不时出现,直到 Git 升级为止。)


“松散”的物体是正常的。它们的对立面是“打包”的对象,它们的存储效率更高。通常git gc会不时自动运行,并注意何时是打包松散物品的好时机。包装过于频繁会降低效率;包装不够经常会降低效率;git gc应该找出正确的时间但是一些 Git 版本已经破坏了一段时间,导致了你观察到的问题。

这不是一个问题:这只是意味着 Git 的效率低于(运行速度更慢),如果这没有被破坏的话。

于 2021-05-21T06:53:34.707 回答