git clone以Broken Pipe结尾

Eth*_*roy 8 git ssh git-clone

我有一个非常大的git存储库,想要从它克隆.在一台机器上(ArchLinux与git版本2.2.2)一切正常......

Cloning into 'foo'
remote: Counting objects: 2372505, done
remote: Compressing objects: 100% (456914/456914), done.
Receiving objects: 100% (2372505/2372505), 3.81 GiB | 6.20 MiB/s, done.
...
Run Code Online (Sandbox Code Playgroud)

...但是在另一台机器上(带有git版本2.3.0的Ubuntu,也尝试过1.7.0.4),我只看到以下内容:

Cloning into 'foo'
remote: Counting objects: 2372505, done.
Run Code Online (Sandbox Code Playgroud)

几个小时后,它结束了

Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

知道问题是什么?

顺便说说:

  • 远程端是一个gitlab服务器.
  • 我在两种情况下都使用SSH.
  • 第一台(工作)机器通过VPN(100 MBit/s)连接.
  • 第二台(非工作)机器与gitlab服务器位于同一千兆位子网中.

Eth*_*roy 4

解决了!我使用了 DNS 名称来连接 gitlab 服务器,但我不知道的是:该名称已解析为同一服务器的外部 IP,因此,服务器和客户端不在同一子网中

因此,客户端连接到服务器的外部 IP,因此防火墙必须将其 NAT 回服务器。

解决方案非常简单:我只需将带有内部 IP 的主机名添加到客户端计算机的/etc/hosts文件中,然后克隆就可以正常工作了。