成功将更改发送到遥控器后,执行git push
将返回以下消息。
error: The last gc run reported the following. Please correct the root cause
and remove gc.log.
Automatic cleanup will not be performed until the file is removed.
warning: disabling bitmap writing, as some objects are not being packed
通常当垃圾收集器返回警告时,git prune
会修复它。这个问题和git gc --aggressive
都无法解决此问题并且不会返回任何错误或警告。文件.git/gc.log
不存在。
这是一个非常大的repo托管在私人Bitbucket服务器上。
"禁用位图写入是什么,因为某些对象没有被打包"意思是,我们如何解决它? gc.log文件在哪里?
答案 0 :(得分:3)
当gc.log
文件想要报告某些内容时,git gc --auto
文件会被遗留(任何事情,问题是git gc --auto
在后台分离并且无处可去报告,除了这个日志文件)。
至于警告本身:位图用于加速对象遍历(即,优化服务器性能)。这仅适用于所有对象实际都在包中的情况,这就是警告的含义。
我不清楚为什么有些物品没有包装好。如果我们不想将此对象放入由同一文件中的函数add_object_entry
确定的包中,则该消息来自builtin/pack-objects.c
中的want_object_in_pack
。这又取决于--local
以及是否有.keep
个文件维护以前的包。
Git版本2.12.2和2.13.0添加了一个hack来忽略(并删除)陈旧的gc.log
文件,因为它们的存在会禁用进一步的git gc --auto
操作。如果您的Git是新的,它会在日志到期时删除那些陈旧的文件,默认为24小时(1.day
)。请参阅the git config
documentation中的gc.logExpire
说明。