![Git 克隆错误](https://linux22.com/image/840484/Git%20%E5%85%8B%E9%9A%86%E9%94%99%E8%AF%AF.png)
我刚刚开始学习 git 并尝试运行这个命令:
git clone git://github.com/schacon/ticgit.git
它不起作用,我收到此错误消息
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
有谁能帮我解决这个问题?提前谢谢了!
编辑 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 :::*
-
答案1
改为跑步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
即使那不是 Git 服务器,你仍然不应该收到“连接被拒绝”的错误。如果你再次尝试时收到相同的错误,某物阻止您连接到该服务器。如果可能,我建议您咨询您的网络管理员。毕竟,应该理想情况下能够访问该服务器。大多数网络管理员可能不会介意您访问 Git 存储库。
不过,有一个简单的解决方法。
对于您这种情况的人,以及其他只能通过 HTTP 访问的情况(例如,只能通过 HTTP 代理访问互联网的人),Git 提供了使用 HTTP(即通过 Web)访问存储库的功能!
我不意味着您将浏览网页来克隆存储库。该git
命令本身能够通过 HTTP 进行连接,作为使用 Git 自己的应用层协议的替代方法。
为此,请在给定命令的 URL 中替换git://
为。http://
git
从用户的角度来看,这完全一样。你可能注意到的唯一区别(除了这种方式应该有效!)是它可能慢点,因为与 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
我也这样做了,git://
并得到了相同的结果。HTTP 访问此存储库工作正常。
如上所述,https://
对我来说也运行良好,尽管速度要慢得多。但我认为很多时间可能都花在了协商连接上——我不认为它一定会比http://
大型存储库慢得多。
答案2
这对我有用。
git config --global url."https://github.com/".insteadOf git://github.com/
答案3
看起来您可能遇到了网络问题。git 协议默认使用端口 9418,因此请确保该端口是开放的,并且没有被防火墙阻止。