3 回答
TA贡献1812条经验 获得超5个赞
问题git gc --aggressive在于选项名称和文档具有误导性。
正如Linus自己在这封邮件中解释的那样,git gc --aggressive基本上是这样的:
尽管git通常会尝试重用增量信息(因为这是个好主意,而且不会浪费CPU时间重新查找我们之前发现的所有良好的增量),但有时您还是想说“让我们重新开始,空白板,并忽略所有以前的增量信息,并尝试生成一组新的增量”。
通常,无需重新计算git中的增量,因为git可以非常灵活地确定这些增量。仅当您知道自己有非常非常差的增量时才有意义。正如Linus解释的那样,主要利用这些工具的工具就git fast-import属于此类。
大部分时间git在确定有用的增量方面做得非常好,使用Delta git gc --aggressive将使您产生可能浪费更长时间的CPU的增量。
莱纳斯结束了他的邮件与结论,即git repack用大--depth而--window在大多数时间是更好的选择; 尤其是在导入大型项目并希望确保git找到良好的增量之后。
因此,相当于(git gc --aggressive但正确完成)的事情是(隔夜)做类似的事情
git repack -a -d --depth=250 --window=250
深度是关于增量链有多深(在较长的历史记录中使它们更长-这是值得的空间开销),而窗口是关于我们希望每个增量候选对象扫描多大的对象窗口。
在这里,您可能要添加-f标记(即“删除所有旧的增量”,因为您现在实际上正在尝试确保该标记确实找到了合适的候选者。
- 3 回答
- 0 关注
- 2160 浏览
添加回答
举报