题
解决方案
它主要取决于有多少储存库的使用。有一个用户检查,在每天一次,和一个分支/合并/etc操作每周一次,你可能不需要运行它超过一年一次。
有几十个开发工作在几十个项目,每个检查2-3次一天,你可能需要运行它每晚。
它不会伤害到运行多于需要的,虽然。
我做什么是运行它现在,然后一个星期从现在需要测量的盘利用,再次运行,测量磁盘的利用率。如果下降5%在大小,则运行每周一次。如果下降更多,然后运行它更加频繁。如果它降低,然后运行频率较低。
其他提示
注意到的缺点的垃圾收集储存库,那么,垃圾被收集。因为我们都知道,如计算机用户的文件,我们认为垃圾,现在可能非常有价值的三天的未来。事实上那混帐保持其大部分碎片周围已经救了我的熏肉好几次–通过浏览所有的晃来晃去的承诺,我必须恢复多的工作,我有意外罐头。
所以不要太多的一个整洁的怪物在你的私人的克隆。还有一点需要它。
另一方面,值的数据可恢复性是可疑的回购使用主要是为遥控器,例如。地方所有的开发推动和/或拉。还有,它可能是明智的脱掉GC运行以及重新包装频繁。
最近的版本内运行的gc自动时需要,所以你不应该做任何事情。看到的选择部分的 男人混帐gc(1):"一些内容git gc--汽车在进行运作,能够创造许多宽松的对象。"
把它在一定时的工作运行,每天晚上(下午?) 当你睡觉。
我偏gc后我做的一大的结帐,并有很多的新的对象。它可以保存空间。E.g。如果你结账一个大SVN项目使用混帐svn,并做个混gc,通常可节省很多的空间
您可以做它没有任何中断,与新(Git2.0Q2 2014年)设置 gc.autodetach
.
看看 提交4c4ac4d 和 提交9f673f9 (阮Thái Ngọc Duy,又名pclouds):
gc --auto
需要时间和可以阻止的用户暂时(但不是任何不那么烦人).
让它运行的背景在系统支持它。
唯一的事情失去了与运行的背景是打印输出。但gc output
是不是真有趣。
你可以把它放在前台,通过改变gc.autodetach
.
因为,2.0版本有一个错误:git2.7(第4季度2015年)会确保 不失去的错误信息.
看看 提交329e6e8 (19Sep2015年)通过 阮Thái Ngọc Duy(pclouds
).
(合并 Junio C滨野-- gitster
-- 在 提交076c827, ,15个月2015)
gc
:保存记录从变为守护进程并可gc --auto
印下来的时间同时 提交9f673f9 (
gc
:config选择运行--auto
在背景2014-02-08)有助于减少一些投诉有关'gc --auto
'占用终端,它创建的另一组问题。最近在这个设定是,作为结果的daemonizing,
stderr
关闭和所有警告丢失。这种警告在结束cmd_gc()
特别重要,因为它将告知用户如何避免"gc --auto
"运行。
因为stderr被关闭,用户不知道,当然他们抱怨'gc --auto
'浪费CPU。变为守护进程并可
gc
现在可以节省stderr
要$GIT_DIR/gc.log
.
下gc --auto
会不会跑gc.log
打印出来,直到用户删除gc.log
.
这句话是从;版本控制}类
Git运行的垃圾收集自动:
•如果有太多的松动物在储存库中
•当一个推到一个远程仓库发生
•在某些命令,这可能会引入的许多宽松的对象
•当一些命令尽可能的非鉴种情况过期的明确要求
最后,垃圾收集发生在你的明确要求 使用从初gc命令。但是,当应该是这样?有没有固体 这个问题的答案,但有一些好的建议和最好的 实践。
你应该考虑运行git gc手动在几个 情况:
•如果你刚刚完成了一个混帐过滤器的分支。回想一下, 过滤分重写许多承诺,介绍了新的和树叶 旧的裁判,应当删除,当你满意 与的结果。所有那些死去的对象(即不再 引用的因为你只是删除了一个参考指向他们) 应当被删除,通过收集垃圾。
•在某些命令,这可能会引入的许多宽松的对象。此 可能是一个大变基的努力,例如。
而在另一面, 当你应该警惕的垃圾收集?
•如果没有孤立的裁判,你可能想要恢复
•在境内rerere,你不需要保存 决议永远
•在只标签和分支机构是足够的原因 缝保留一个承诺永久地
•在FETCH_HEAD检索(URL-直接检索通过 git fetch),因为它们是立即受到垃圾收集
•在只标签和分支机构是足够的原因 缝保留一个承诺永久地
•在FETCH_HEAD检索(URL-直接检索通过 git fetch),因为它们是立即受到垃圾收集
我用的时候我做的一个很大的承诺,上述所有当我除去更多的文件从仓库中..之后,提交得更快