【问题标题】:Git: Stop git pushGit:停止 git 推送
【发布时间】:2020-12-05 07:53:26
【问题描述】:

我正在将一个大文件推送到 git,但连接速度很慢。终止此推送(中推)并在我有更好的连接时恢复它的最安全方法是什么?

【问题讨论】:

    标签: git


    【解决方案1】:

    杀死客户端(Ctrl+C 或任何其他方法)不会导致服务器上的数据损坏,如果这就是您所说的“安全”的话。在所有 blob 都成功传输之前,服务器不会更新任何内容,然后它会更新 refs 以指向新的 blob。

    Git 没有任何工具可以恢复中断的传输,因此当您的连接速度更快时,您可能不得不再次传输大 blob。

    【讨论】:

      【解决方案2】:

      我相信git push 是原子的,这意味着如果你只是 Ctrl-C 退出操作,远程存储库将处于推送之前的原始状态。这也意味着,当您再次推送时,它将从头开始。但这听起来并不一定是你的问题。

      【讨论】:

      • 如果我想让它从停止点竞争推动呢?!像暂停按钮
      【解决方案3】:

      在 Git 2.30(2021 年第一季度)之前,被杀死的“git push(man) 可能会留下一个打包对象进程,仍在计算以找到一个好的压缩,浪费周期.

      这已得到纠正,并说明杀死正在进行的推送是多么安全。

      参见 Jeff King (peff)commit 8b59935(2020 年 11 月 20 日)。
      (由 Junio C Hamano -- gitster -- 合并于 commit adae5df,2020 年 12 月 3 日)

      send-pack: 在信号或退出时杀死 pack-objects 助手

      签字人:杰夫·金

      我们生成了一个外部打包对象进程来实际将对象发送到远程端。
      如果我们在这个过程中被信号杀死,pack-objects 会继续运行并完成推送,这可能会让用户感到惊讶。

      我们下去的时候应该把它拿下来。

      【讨论】:

        猜你喜欢
        • 2022-10-25
        • 2011-10-29
        • 2012-02-28
        • 2011-01-11
        • 2012-03-02
        • 2015-09-05
        • 2019-04-05
        • 2016-08-16
        • 1970-01-01
        相关资源
        最近更新 更多