2017-02-14 121 views
1
// This works 
git clone https://github.com/foreverjs/forever.git 

// This one also works 
git clone [email protected]:foreverjs/forever.git 

// This one didn't work 
git clone git://github.com/foreverjs/forever.git 

的第三个错误消息是:为什么混帐混帐克隆://不工作

Cloning into 'forever'... 
Permission denied (publickey). 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 

据我所知,混帐克隆通过SSH或HTTPS比git://协议更受限制。我真的很困惑,为什么我得到这个错误消息,因为git://协议甚至不需要进行身份验证。

github现在只允许通过SSH或HTTPS的git clone,或者我错过了这里的东西?

回答

0

在我的本地计算机的gitconfig文件引起的这个问题,我发现在〜/的.gitconfig文件中的以下两行:

[url "ssh://"] 
    insteadOf = git:// 

如果我删除了这两条线,通过git://协议将不会运行SSH,所以不会有更多的权限问题

0

它为我的作品只是罚款:

$ git clone git://github.com/foreverjs/forever.git 
Cloning into 'forever'... 
remote: Counting objects: 3258, done. 
remote: Total 3258 (delta 0), reused 0 (delta 0), pack-reused 3258 
Receiving objects: 100% (3258/3258), 782.12 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (1341/1341), done. 
Checking connectivity... done. 

你有你的公开密钥设置是否正确?

但是git://是不同的协议,如在手册页中提到:

  • git:匿名的git协议通过直接的TCP连接(或代理,如果配置)

这是不安全的(不加密),所以不建议使用。

github只允许通过SSH或HTTPS的git克隆现在还是我错过了什么?

首选的方法是使用SSH或HTTPS,因为您总是通过不安全的Internet连接(除非您处于GitHub的数据中心 - 不太可能)。 git协议可以在您信任的内联网或本地网络中派上用场。还请注意,

像“git://example.org/path/to/repo.git”这样的URL将被重写为“ssh://example.org/path/to/repo.git”推,但拉将仍然使用原始网址。

+0

我从github检查并验证公钥已正确设置。正如你所看到的,通过SSH和HTTPS,git clone没有问题。仍然不明白这里真正的问题 –

+0

@ChuangFu您的网络过滤了吗? git协议服务器在端口9418上侦听;如果您无法将出站连接到该端口,那就可以解释为什么它不起作用。 –