我有一个非常大的 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.
...
...但是在另一台机器上(带有 git 版本 2.3.0 的 Ubuntu,也尝试过 1.7.0.4),我只看到以下内容:
Cloning into 'foo'
remote: Counting objects: 2372505, done.
几个小时后,它以
结束Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
知道问题出在哪里吗?
顺便说一句:
- 远端是一个gitlab服务器。
- 我在这两种情况下都使用 SSH。
- 第一台(工作中的)机器通过 VPN (100 MBit/s) 连接。
- 第二台(不工作的)机器与 gitlab 服务器位于同一个千兆子网中。
最佳答案
已解决! 我使用了一个 DNS 名称来连接到 gitlab 服务器,而我不知道的是:这个名称已被解析为同一服务器的外部 IP,所以,服务器和客户端不在同一个子网中。
因此,客户端连接到服务器的外部 IP,因此防火墙必须将其 NAT 返回到服务器。
解决方案非常简单:我只是将带有内部 ip 的主机名添加到客户端计算机的 /etc/hosts
文件中,然后从该文件中克隆就像一个魅力。
关于git clone 以 Broken Pipe 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404754/