git:存储库会自然膨胀吗?有啥好的做法可以缓解这种情况
Posted
技术标签:
【中文标题】git:存储库会自然膨胀吗?有啥好的做法可以缓解这种情况【英文标题】:git: Do repositories tend to naturally bloat? And what are good practices to alleviate thatgit:存储库会自然膨胀吗?有什么好的做法可以缓解这种情况 【发布时间】:2021-02-04 08:29:51 【问题描述】:如果我理解正确,git repo 包含所有修订。 克隆 repo 会检索所有修订。 因此,如果一个特定的修订版本包含很多文件(假设太多),这个错误会被“载入”到 repo 中并由所有贡献者携带?
有没有办法“切断”回购时间线中的某个点,在此之前,修订被认为是过时的,不需要到处复制?
我能想到的唯一方法是存档当前 repo 并使用当前 repo 的前沿开始一个新的 repo
【问题讨论】:
这取决于这些修订是否是您关心的分支历史的一部分。如果是这样,除非您重写历史记录,否则您无能为力(有几种方法可以实现,取决于您到底想做什么)。但是,如果它们是您不关心的分支的一部分,您可以简单地删除这些分支并运行git gc
,最终占用空间但不属于任何现有分支历史记录的相关对象将被丢弃跨度>
@Omer:另外,git gc
将在巨大的存储库中被 Git 自动调用。它发生在我身上好几次。
另外值得一提的是,它也被 GitHub、GitLab 等 Git 主机自动调用,因此删除那里的分支并在一段时间后重新克隆应该也可以工作
【参考方案1】:
您可以使用浅克隆仅获取前 x 次提交,从而传输更少的数据:
git clone --depth 1
【讨论】:
如果你的 Git 版本有它,还要考虑--shallow-since
。一般来说,这比试图猜测一个好的深度要容易得多。以上是关于git:存储库会自然膨胀吗?有啥好的做法可以缓解这种情况的主要内容,如果未能解决你的问题,请参考以下文章
有啥好的 Pig Accumulator 接口实现的例子吗?