如何管理大型git仓库?

pra*_*tha 8 git github bitbucket

我有一个非常大的 git 存储库 [大于 1 GB],当我们必须在新的本地实例上设置存储库时总是会出现问题。有没有任何行之有效的方法可以解决这个问题?

Jim*_*ond 8

如果您不需要立即完整的历史记录,并且您使用的是相当新的 Git 版本(1.9 或更高版本),那么您可以进行浅克隆:

  • git clone --depth 5 user@host:repo.git将把回购历史记录截断为每个分支上最近的 5 次提交
  • git clone --shallow-since=2017-12-01 user@host:repo.git将把回购历史记录截断为 2017 年 12 月 1 日以来的所有内容
  • git clone --shallow-exclude=abc1234 user@host:repo.git将克隆除指定修订版和可从指定修订版访问的修订版之外的所有修订版。您可以使用--shallow-exclude多次来指定多个不需要的修订。

您还可以使用类似的方法克隆单个分支git clone --branch master --single-branch user@host:repo.git,这只会拉取指定存储库上主分支的历史记录。

https://www.atlassian.com/blog/git/handle-big-repositories-git有更多详细信息,这可能会有所帮助 - 特别是当您正在处理具有大量二进制资产的存储库时。


jth*_*ill 3

设置一个“仓库”克隆存储库,其中的旧历史记录不会在共享文件系统上更改。执行所有进一步的克隆,--reference该存储库及其内容不会复制到新克隆。阅读克隆文档以查看相关的使用建议,例如在失去(或者如果您可能失去)参考库的访问权限之前该怎么做。