如何下载大型Git存储库?

Seb*_*ray 22 git bitbucket

我在BitBucket上有一个超过4GB的GIT存储库.

我无法使用普通的GIT命令克隆存储库,因为它失败了(看起来它工作了很长时间但后来又回滚).
我也无法从BitBucket界面下载存储库作为zip:

Feature unavailable This repository is too large for us to generate a download.
Run Code Online (Sandbox Code Playgroud)

有没有办法逐步下载GIT存储库?

Pud*_*ler 17

如果您不需要提取整个历史记录,则可以指定要克隆的修订数

git clone <repo_url> --depth=1

当然,如果您的存储库中有一个特别大的文件,这可能没有用


Jer*_*yal 9

1)您可以最初下载只有最新提交修订版(深度= 1)的单个分支,这将显着减少要下载的存储库的大小,并且仍然可以让您在代码库上工作:

git clone --depth <Number> <repository> --branch <branch name> --single-branch
Run Code Online (Sandbox Code Playgroud)

例子:
git clone --depth 1 https://github.com/dundermifflin/dwightsecrets.git --branch scranton --single-branch


2)稍后您可以获得所有提交(在此之后您的回购将处于与git clone之后相同的状态):

git fetch --unshallow
Run Code Online (Sandbox Code Playgroud)

或者如果它仍然太多,只获取最后 25 次提交:

git fetch --depth=25
Run Code Online (Sandbox Code Playgroud)

其他方式: git clone不可恢复,但您可以先git clone在第三方服务器上,然后通过 http/ftp 下载完整的 repo,这实际上是可恢复的。


Mat*_*ski 8

对我来说,完美的帮助,如此答案中所述:https : //stackoverflow.com/a/22317479/6332374,但由于回购量大,因此有一点改进:

首先:

git config --global core.compression 0

然后,克隆您的仓库中的一部分:

git clone --depth 1 <repo_URI>

现在是“其余”

git fetch --unshallow

但这是诀窍。:当您有大量回购时,有时必须多次执行该步骤。所以...再次

git fetch --unshallow

等等。

尝试多次。可能您会看到,每次执行“ unshallow”操作时,您都会在错误发生之前获得越来越多的对象。

最后,请确保。

git pull --all


Seb*_*ray 1

我通过使用此方法使其正常工作fatal: Early EOF fatal: index-pack failed

但只有在我设置了 SSL 之后,此方法仍然无法通过 HTTP 运行。

BitBucket 的支持非常有帮助,并为我指明了这个方向。