为什么git一直告诉我它是"在后台自动打包存储库以获得最佳性能"?

And*_*ier 85 git packing background-process

注意:我认为这是一个重复的问题,这是一个非背景包,挂起 git 与一个微妙的不同的错误消息.


在我的一个git存储库中,每次调用时(例如)git fetch,git打印:

Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Run Code Online (Sandbox Code Playgroud)

如果我git fetch反复做的话,它似乎每次都会打印出来,即使没有任何变化也无需git fetch做任何事情.这对我来说没有多大意义.它似乎也发生在其他网络操作中,例如git pushgit pull.

该命令立即返回到提示,没有进一步的输出,我找不到在我的机器上运行的任何git进程.它似乎只发生在这个存储库中,并且只在这台机器上发生.git config -l | grep gc没有回报.

我该怎么做才能诊断或解决这个问题?

$ git --version 
git version 2.0.1
Run Code Online (Sandbox Code Playgroud)

我使用的是OS X 10.9.

And*_*ier 148

我找到了你提供的第二条评论的解决方案,Trengot,谢谢.事实证明,我有一些悬挂的斑点,它们在.git/objects/17并因此触发包装:

$ git fsck
dangling blob d9ff0aeac4aa8b4e0907daed675ebf60278bc977
dangling blob dbff2d073741f9775c815d4a3c623736af224dad
dangling blob e1ffbab1c5b985cd1cd3bc0281075ea2ed80744a
dangling blob fdff59878ccb3a75689f4acca615cfb635288774
Run Code Online (Sandbox Code Playgroud)

这清理了它们:

$ git gc --prune=now
Run Code Online (Sandbox Code Playgroud)

请注意,根据Henrik在下面的评论,这可能有点危险.照顾自己!

  • 谢谢!这似乎对我有用.请注意`--prune = now`有点危险.默认情况下,`--prune`将保留2周的悬空blob,这意味着如果您在5分钟前意外地进行了不正确的变更,或者昨天删除了分支,则可以恢复.一旦你运行这个命令,你就会失去所有悬空的博客,直到现在 - 而不是2周前.此外,它[似乎](https://git-scm.com/docs/git-gc)就像你在其他终端中执行其他Git命令时不应该运行它,否则你的仓库可能会损坏. (10认同)
  • 你救了我的一天 (3认同)