Git:停止git push

44

我正在向Git上传一个大文件,但我的连接非常慢。如何安全地中止这个推送过程,并在我有更好的连接时恢复它?

3个回答

61

如果你所说的“安全”是指杀死客户端(Ctrl+C 或其他方法)不会导致服务器上的数据损坏,那么是的。直到所有的 blob 成功传输后,服务器才进行更新以将 refs 指向新的 blob,因此服务器的数据是不会受到影响的。

Git 没有任何恢复中断传输的工具,因此当你有更快的连接时,你可能需要重新传输大的 blob。


16

我认为git push是原子的,这意味着如果您在操作过程中仅使用Ctrl-C退出,则远程存储库将处于其推送之前的原始状态。 这还意味着,当您再次进行推送时,它将从头开始。 但似乎这并不一定对您造成问题。


如果我想让它从停止点开始推进,怎么办?就像暂停按钮一样。 - Astm

1
在Git 2.30之前(2021年第一季度),被杀死的 "git push"(man) 可能会留下一个pack-objects进程,仍在计算以找到良好的压缩率,浪费资源。
这已得到纠正,并说明了终止正在进行的推送是多么安全。

请查看提交8b59935(2020年11月20日)由Jeff King (peff)完成。
(由Junio C Hamano -- gitster --提交adae5df中合并,于2020年12月3日)

send-pack:在信号或退出时终止pack-objects助手

签署者:Jeff King

我们会生成一个外部的pack-objects进程来将对象发送到远程端。
如果在此过程中被信号杀死,pack-objects将继续运行并完成推送,这可能会让用户感到惊讶。
我们应该在关闭时停止它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接