Git fetch / pull / clone在接收对象时挂起

时间:2012-08-13 19:43:10

标签: git ssh scp

当从git存储库中获取或提取或克隆存储库时,我达到了这一点:

remote: Counting objects: 6666, done.
remote: Compressing objects: 100% (5941/5941), done.
Receiving objects:  23% (1534/6460), 11.68 MiB | 23 KiB/s  

它挂了。 23%/对象的数量不是给定的,它的范围从单个数字到最多60s,似乎。下载列表的速度也冻结了 - 它不像它慢慢向零爬行。

我坐在旁边的那个人没有问题,所以这不是路由器问题。我们使用beanstalk作为我们的工作存储库,但是我有来自beanstalk和github的问题(虽然偶尔会看到一个github会完成)。

自从升级到Mountain Lion并更新Xcode以来,问题似乎才出现。我已经擦了git(包括XCode的)并尝试用自制软件安装它。这不起作用,所以我删除它并尝试使用他们提供的Mac安装包,但也没有解决问题。

Beanstalk为git存储库提供了SSH URL,但我没有遇到通过SCP或SSH连接到我已完成工作的服务器的问题。

这会扼杀我的工作流程,所以任何帮助都会非常感激!

5 个答案:

答案 0 :(得分:20)

VMware on NAT 对我来说有这个问题。将其更改为 Bridged(复制状态)修复了问题。

答案 1 :(得分:8)

尝试检查您的网络连接。也许路由表中有垃圾。可能是您的路由器上的端口损坏或计算机的网络接口问题。尝试ping你正在克隆git repo的服务器,也许你的计算机和这个服务器之间的链接不稳定。

答案 2 :(得分:7)

看起来与我的问题类似。在一段短暂的时间之后,Git似乎仍然在抓取或推动。 我可以建议你加入~/.ssh/config

Host *

ServerAliveInterval 60

我还有山狮的MBP。我希望这个超时是导致问题的原因。 (大约三十或四十分钟后,我注意到它继续。)

答案 3 :(得分:2)

在Mac上,使用Git 2.22(2019年第二季度)时,git fetch应该更能抵抗这种问题:在使用SIGPIPE(例如OSX)杀死“ git fetch”的平台上,运行的upload-pack检测到错误后挂断的另一端可能会导致“ git fetch”死于信号,从而导致进行了flakey测试。
现在,“ git fetch”在其操作的网络部分将忽略SIGPIPE(这不是问题,因为我们检查了write(2)s的返回状态)。

请参见commit 1435889commit 37c8001(2019年3月3日)和Jeff King (peff)(2019年3月5日)。
(由Junio C Hamano -- gitster --commit 27cdbdd中合并,2019年3月20日)

  

fetch:在网络运行期间忽略SIGPIPE

     

默认的SIGPIPE行为对于生成的命令很有用   很多输出:如果我们输出的接收器消失了,我们将   异步通知以停止生成它(通常是通过杀死   程序)。

     

但是对于像fetch这样的命令,它主要与   接收数据并将其写入磁盘,可能是意外的SIGPIPE   尴尬。我们已经在检查所有write()的返回值   通话,由于信号而死亡使我们失去了优雅地机会   处理错误。

     

在Linux上,提取期间通常根本看不到SIGPIPE。如果   网络连接的另一端挂断,我们将看到ECONNRESET
  但是在OS X上,我们得到一个SIGPIPE,该进程被终止。

     

在获取的网络部分期间忽略SIGPIPE,这将   使我们的write()返回EPIPE,从而使我们在   平台。

答案 4 :(得分:-17)

首先尝试通过键入

来初始化git存储库文件夹
$ git init

它应该有帮助