具有历史深度的紧凑型 Git 存储库

sca*_*pus 5 git

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

当我们想从大型存储库中释放一些空间时怎么样?我知道我们可能会使用git gc或者git prune有其他特定的方式--depth=<depth>来减少本地存储库中的提交存储数量吗?并且它还应该保持 SHA1 能够继续使用它。

Von*_*onC 4

最简单的方法是:

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

这将克隆最后 n 次提交,同时允许 fetch/pull/psuh 仍然与远程存储库一起使用。

从 Git 2.5 开始,您可以获取单个提交,但除非该提交是最新的提交(类似于 a git clone --depth=1),否则不会允许 fetch/pull/push。

确保给定本地存储库尽可能精简的另一种方法是使用gc/prune/repack 的组合

git gc --aggressive
git repack -Ad       # kills in-pack garbage
git prune --progress # kills loose garbage
Run Code Online (Sandbox Code Playgroud)