【问题标题】:Is there any way to continue Git clone from the point where it failed?有什么方法可以从失败的地方继续 Git 克隆?
【发布时间】:2011-12-21 09:25:12
【问题描述】:

我昨天正在克隆打开的嵌入式项目。由于连接问题,克隆失败。我再次启动命令并从头开始克隆。

有什么方法可以让我的克隆从失败的地方开始?

【问题讨论】:

    标签: git


    【解决方案1】:

    很遗憾,这是无法做到的。见

    • Continue interrupted git clone

      没有。 git clone 无法重新启动。你需要rm -rfcommon,然后重启再从头克隆。

    • Continue git clone after interruption

      很遗憾,我们没有足够的 GSoC 插槽供项目使用 可重新启动的克隆。

      不过,在列表中讨论了如何实现这一点。

      不幸的是,我们这些知道原生协议如何工作的人 无法就如何重新启动它达成一致。如果你 认真阅读有关此主题的档案,您会看到 Nico 和我 不同意如何做到这一点。 IIRC Nico 的立场是,它不是 真的可以实现重启。

    您必须重新启动克隆。

    【讨论】:

    • 我刚遇到这个。克隆来自 bitbucket 存储库,它在 ~50% 时中断,然后当我重新启动命令时,它似乎使用了缓存并轻而易举地过去了 40%,然后它开始正常下载。损失约10%,这还不错。好像有检查点?所以它似乎与特定的(bitbucket)实现有关?或者,我错过了什么吗?
    【解决方案2】:

    由于 git 服务器和本地计算机之间的连接不佳,git clone 可能会持续数小时然后失败。重新启动克隆只是重新启动进程,这很可能再次失败。

    作为一种解决方法,请使用与 git 存储库和本地 ssh 访问有良好连接的托管服务器。克隆到服务器,然后通过 ssh rsync 到本地,并根据需要恢复 rsync。

    在您的云服务器上:

    `git clone -n git://<repo>.git`
    

    在您的本地计算机上(如果失败,请重复以继续):

    `rsync -a -P -e ssh <user>@<cloud-server>:<path-to-cloned-repository> <local-target-path>`
    

    【讨论】:

    • 这很好,这样,如果不需要的话,你甚至可以在 rsync 之前删除 .git 文件夹
    • 现在我希望我有一个云服务器,我无法完成虚幻引擎5的下载......这很疯狂......
    【解决方案3】:

    注意:对于包含子模块的项目,git 2.9.1(2016 年 7 月)可以提供帮助。

    参见commit bb9d91b(2016 年 6 月 9 日)和 commit 665b35e(2016 年 6 月 10 日)Stefan Beller (stefanbeller)
    (由 Junio C Hamano -- gitster -- 合并于 commit bb2d8a8,2016 年 7 月 11 日)支持>

    submodule--helper: 初始克隆学习重试逻辑

    每一个尝试被克隆的子模块,都会被重试一次 克隆所有其他子模块后失败的情况。
    这有助于减轻短暂的服务器故障并增加可靠的机会

    如果重试失败,错误信息为:

    Failed to clone '%s' a second time, aborting
    

    大量克隆包含数百个子模块的存储库。

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 2014-09-03
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多