在运行git fetch origin
时,我开始收到这个消息
在后台自动打包存储库以获得最佳性能。
请参阅“git help gc”了解手动管理。
警告:上次运行的gc报告了以下错误。请更正根本原因并删除. git/gc.log。
在删除文件之前,不会执行自动清理。
警告:有太多无法到达的松散对象;请运行“git prune”将其删除。
这种情况经常发生。我在某个地方发现git gc
应该有帮助,但它只工作一次(或似乎工作)-在此之后,并遵循git fetch origin
我得到
在后台自动打包仓库以获得最佳性能。请参阅“git help gc”了解手动打包。
我也试过删除.git/gc.log,但没有用。
我的Git技能真的很有限。为什么我会收到这个警告,以及如何长期修复这个问题?
3条答案
按热度按时间snz8szmq1#
这个特殊的问题是由于Git中的一个bug(2.20.0中首次应用了一个修复程序:请参阅commit
3029970275b473dbf62149887a19a6b4879528d7
,它很好地描述了所发生的事情,但也请参阅commit095c741edd1d9604b6c285000a836721fd69f051
,它有一个贡献性的影响,在Git 2.17中得到了修复)。如果你的Git版本有缺陷,它会让太多松散的对象随着时间的推移而堆积起来。1你可以也应该升级你的Git版本,让这些对象不会堆积得如此严重,但现在,当你不对仓库做任何其他事情的时候,你可以继续手动运行git prune
*。然后在清理完成的时候手动运行git gc
。你可能还需要运行rm .git/gc.log
。(The在Git升级之前,问题会不时出现。)
“松散”的物品是正常的。它们的对立面是“打包”的物品,这种物品存放起来更有效率。通常,
git gc
会时不时地自动运行,并注意到什么时候是打包松散物品的好时机。打包太频繁会降低效率;填充不足会降低效率;git gc
* 应该 * 能够计算出正确的时间。但是一些Git版本在一段时间内就没有这个功能,这就导致了你所观察到的问题。这不是什么大问题:这只是意味着Git的效率(运行速度)比没有被破坏时要低。
waxmsbnn2#
这篇文章帮助我-
错误应该消失。
参考-https://medium.com/lynns-dev-blog/git-there-are-too-many-unreachable-loose-objects-c2df601b8001
blpfk2vs3#
更新Git到最新版本,为我摆脱这个错误的工作