git gc --aggressive与git repack

我正在寻找减少git存储库大小的方法。搜索将我带入git gc --aggressive大多数时间。我还读到这不是首选方法。

为什么?如果正在跑步,我应该注意些什么gc --aggressive

git repack -a -d --depth=250 --window=250建议超过gc --aggressive。为什么?如何repack减少存储库的大小?另外,我对标志--depth和还不太清楚--window

我应该在gc和之间选择什么repack?什么时候应该使用gcrepack


潇潇雨雨
浏览 2161回答 3
3回答

慕雪6442864

问题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标记(即“删除所有旧的增量”,因为您现在实际上正在尝试确保该标记确实找到了合适的候选者。
打开App,查看更多内容
随时随地看视频慕课网APP