在Git中,有一个命令git clone --depth=<depth>
只检索特定长度的历史数据。还有一个命令通过使用git fetch --depth=<depth>
来收集更多的历史数据。
如果我们想从大型存储库中释放一些空间呢?我知道我们可以使用git gc
或git 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