你应该多久使用混帐gc?

手册 简单地说:

鼓励用户运行这个任务定期在每个储存库的保持良好的磁盘空间的利用率和良好的操作性能。

是否有某些命令得到一些对象的计算,以找出它是否是时候gc?

有帮助吗?

解决方案

它主要取决于有多少储存库的使用。有一个用户检查,在每天一次,和一个分支/合并/etc操作每周一次,你可能不需要运行它超过一年一次。

有几十个开发工作在几十个项目,每个检查2-3次一天,你可能需要运行它每晚。

它不会伤害到运行多于需要的,虽然。

我做什么是运行它现在,然后一个星期从现在需要测量的盘利用,再次运行,测量磁盘的利用率。如果下降5%在大小,则运行每周一次。如果下降更多,然后运行它更加频繁。如果它降低,然后运行频率较低。

其他提示

注意到的缺点的垃圾收集储存库,那么,垃圾被收集。因为我们都知道,如计算机用户的文件,我们认为垃圾,现在可能非常有价值的三天的未来。事实上那混帐保持其大部分碎片周围已经救了我的熏肉好几次–通过浏览所有的晃来晃去的承诺,我必须恢复多的工作,我有意外罐头。

所以不要太多的一个整洁的怪物在你的私人的克隆。还有一点需要它。

另一方面,值的数据可恢复性是可疑的回购使用主要是为遥控器,例如。地方所有的开发推动和/或拉。还有,它可能是明智的脱掉GC运行以及重新包装频繁。

最近的版本内运行的gc自动时需要,所以你不应该做任何事情。看到的选择部分的 男人混帐gc(1):"一些内容git gc--汽车在进行运作,能够创造许多宽松的对象。"

如果你使用 混帐Gui, , 告诉你的 当你应该担心:

This repository currently has approximately 1500 loose objects.

将以下命令将带来一个类似的数量:

$ git count-objects

除非, 从其来源,混帐gui会做数学本身,实际上计数的东西在 .git/objects 文件夹和可能带来一个近似(我不知道 tcl 正确读那!)。

在任何情况下, 似乎 给予的警告基于一个任意数量 周围 300宽松的对象。

把它在一定时的工作运行,每天晚上(下午?) 当你睡觉。

我偏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),因为它们是立即受到垃圾收集

我用的时候我做的一个很大的承诺,上述所有当我除去更多的文件从仓库中..之后,提交得更快

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top