Git克隆错误

cae*_*sar 3 networking git

我刚刚开始学习 git 并尝试运行此命令:

git clone git://github.com/schacon/ticgit.git
Run Code Online (Sandbox Code Playgroud)

它不起作用,我收到此错误消息

gwapps@gwapps-ThinkPad-X61:/home/gitRepo$ sudo git clone git://github.com/schacon/ticgit.git
Cloning into 'ticgit'...
fatal: unable to connect to github.com:
github.com[0: 204.232.175.90]: errno=Connection refused
Run Code Online (Sandbox Code Playgroud)

有没有人可以帮我解决这个问题?提前致谢!

编辑 netstat -tulpn 的输出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -               
udp        0      0 10.20.2.160:123         0.0.0.0:*                           -               
udp        0      0 127.0.0.1:123           0.0.0.0:*                           -               
udp        0      0 0.0.0.0:123             0.0.0.0:*                           -               
udp        0      0 0.0.0.0:44048           0.0.0.0:*                           -               
udp        0      0 127.0.1.1:53            0.0.0.0:*                           -               
udp6       0      0 fe80::216:d3ff:fec4:123 :::*                                -               
udp6       0      0 ::1:123                 :::*                                -               
udp6       0      0 :::123                  :::*                                -               
udp6       0      0 :::58657                :::*     

                       -       
Run Code Online (Sandbox Code Playgroud)

Eli*_*gan 8

运行git clone http://github.com/schacon/ticgit.git代替。

也就是说,替换git://http://。这应该有效。

对于加密连接——这通常是一件好事,因为您收到的数据可能无法在传输过程中被任何恶意第三方修改——您可以尝试使用https://. 感谢 Mitch指出这一点这对我有用,但速度要慢得多(花了将近半分钟而不是不到两秒)。你的旅费可能会改变。

解释如下......(但如果你愿意,你可以停止阅读这里并使用该命令。)

您的公司(或学校)网络可能会阻止您访问 Git 服务器。

在我的 Internet 连接上,我检查了 IP 地址 204.232.175.90 是否有一个服务器接受端口 9418 上的传入连接。(毕竟,这是必须做的,而不是必须做的。)确实如此,尽管当时(即在我尝试自己克隆 repo 之前)我不清楚该端口上运行的内容是否实际上是 Git 服务器:

ek@Kip:~$ sudo nmap -sS -sV -p9418 204.232.175.90
[sudo] password for ek:

Starting Nmap 6.00 ( http://nmap.org ) at 2013-08-16 09:25 EDT
Nmap scan report for github.com (204.232.175.90)
Host is up (0.046s latency).
PORT     STATE SERVICE VERSION
9418/tcp open  domain  ISC BIND   Email support

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.82 seconds
Run Code Online (Sandbox Code Playgroud)

即使那不是 Git 服务器,您也不应该“连接被拒绝”。如果当您再次尝试得到同样的错误,东西阻止您连接到该服务器的能力。如果可能,我建议咨询您的网络管理员。毕竟,理想情况下您应该能够访问该服务器。大多数网络管理员可能不会在您访问 Git 存储库时遇到问题。

但是,有一个简单的解决方法。

对于处于您这种情况的人,以及其他只能通过 HTTP 访问的人(例如,只能通过 HTTP 代理访问 Internet 的人),Git 提供了使用 HTTP(即,通过 Web)访问存储库的能力!

并不是说你会浏览网页来克隆存储库。该git命令本身能够通过 HTTP 进行连接,作为使用 Git 自己的应用层协议的替代方法。

要做到这一点,替代git://http://中给予的URLgit命令。

从您作为用户的角度来看,这完全相同。您可能会注意到的唯一区别(除了这种方式应该有效!)是它可能更慢,因为与 Git 自己的协议相比,HTTP 不太适合访问 Git 存储库。

随着时间的推移,或者对于大型存储库,这可能是一个问题。这就是我建议联系您的网络管理员的原因。但在这种情况下,应该没有问题;存储库看起来很小。(即使它很大,增加等待时间有时也是可以接受的。当您必须每天多次传输大量数据时,它可能会给您的工作流程带来负担。)

Git 服务器可能提供 HTTP 访问,但实际上这种情况很少见,我已经测试了这个服务器,它确实提供了它,并且我能够克隆存储库

ek@Kip:~/src$ git clone http://github.com/schacon/ticgit.git
Cloning into 'ticgit'...
remote: Counting objects: 1857, done.
remote: Compressing objects: 100% (1022/1022), done.
remote: Total 1857 (delta 781), reused 1787 (delta 735)
Receiving objects: 100% (1857/1857), 374.78 KiB | 702 KiB/s, done.
Resolving deltas: 100% (781/781), done.
ek@Kip:~/src$ ls ticgit                # you don't have to run this
bin       lib          LICENSE_MIT  Rakefile    spec               TODO
examples  LICENSE_GPL  note         README.mkd  ticgit-ng.gemspec
ek@Kip:~/src$ du -sh ticgit            # you don't have to run this
844K    ticgit
Run Code Online (Sandbox Code Playgroud)

我也这样做了git://并得到了相同的结果。HTTP 访问适用于此存储库。

如上所述,https://对我来说也很好用,但速度要慢得多。但我认为很多时间可能都在协商连接上——我不认为它一定会比http://大型存储库慢得多。