首页 > 解决方案 > 暂停/恢复回购克隆

问题描述

在在家工作期间,我的带宽不足,无法克隆 repo。我已经尝试了大约 10 次来克隆 repo,但没有运气。

Receiving objects:  91% (54330/59387), 445.67 MiB | 44.00 KiB/s
Receiving objects:  91% (54506/59387), 445.80 MiB | 46.00 KiB/s
Receiving objects:  91% (54635/59387), 445.86 MiB | 45.00 KiB/s
Receiving objects:  92% (54637/59387), 445.86 MiB | 45.00 KiB/s
Receiving objects:  92% (54721/59387), 445.92 MiB | 38.00 KiB/s
Receiving objects:  92% (54782/59387), 445.99 MiB | 43.00 KiB/s
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

有什么办法可以接收剩余的约 8% 的物品?让我知道 git clone 是否有任何属性可以帮助我解决这个问题。即使在 Visual Studio 或 Visual Studio Code 中有实现相同的方法,我也可以。

我看过“如何在一个不稳定的连接上完成一个大项目的 git 克隆?” . 它解释了如果你要从头开始怎么办。我正在寻找的是如何在不重新启动克隆的情况下继续前进。

标签: gitgit-clone

解决方案


尝试从浅克隆开始:

git clone --depth 1 <repo>

然后,您可以尝试取消 repo :

git fetch --unshallow origin

如果失败,您可以尝试首先迭代增加深度:

git fetch --depth 10 origin master
git fetch --depth 20 origin master
...

并可能一一获取分支:

git fetch --depth 1 origin branch1
git fetch --depth 10 origin branch1
...

直到git fetch --unshallow通过。


另一种方法是从任何现有克隆中复制文件。

假设您可以通过 ssh 访问没有带宽问题的服务器:

ssh <server-with-bandwidth>
[remote]$ git clone <repo>

然后,您只需将remote:repo/(包括其.git/目录,其中包含所有克隆的历史记录)的内容复制到您自己的 PC 上。

您可以使用scp, sftp, rsync... 或任何允许在失败时恢复的工具。

显然,请遵循您公司的安全准则:选择一个可以有效克隆代码的远程服务器,在使用后删除无用的克隆,等等......


推荐阅读