Git:停止git push

时间:2012-07-30 20:29:11

标签: git

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

3 个答案:

答案 0 :(得分:45)

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

Git没有任何恢复中断传输的功能,所以当你有更快的连接时,你可能不得不再次传输大blob。

答案 1 :(得分:12)

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

答案 2 :(得分:0)

在Git 2.30(Q1 2021)之前,被杀死的“ git pushman可能会留下一个打包对象进程,但仍在寻找一个好的方法压缩,浪费周期。

此问题已得到纠正,并说明杀死进行中的推送有多么安全。

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

send-pack:在信号或退出时杀死打包对象助手

签名人:杰夫·金

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

我们下去时应该把它取下来。