压缩Git库与历史深度

  • 本文关键字:历史 深度 Git 压缩 git
  • 更新时间 :
  • 英文 :


在Git中,有一个命令git clone --depth=<depth>只检索特定长度的历史数据。还有一个命令通过使用git fetch --depth=<depth>来收集更多的历史数据。

如果我们想从大型存储库中释放一些空间呢?我知道我们可以使用git gcgit prune,但是否有其他方法可以像--depth=<depth>那样减少本地存储库中的提交存储数量?而且它也应该保持SHA1能够继续工作。

最简单的方法是:

  • 完全删除当前的本地repo
  • git clone --depth=n /url/of/remote/repo

这将克隆最后n个提交,同时允许fetch/pull/psuh仍然与远程repo一起工作。

从Git 2.5开始,你可以获取单个提交,但除非该提交是最新的(就像git clone --depth=1),否则不允许获取/拉/推。

另一种确保给定的本地repo尽可能精简的方法是使用gc/prune/repack:

git gc --aggressive
git repack -Ad       # kills in-pack garbage
git prune --progress # kills loose garbage

最新更新