为什么 git clone git:// 不起作用?

4
// This works
git clone https://github.com/foreverjs/forever.git

// This one also works
git clone git@github.com: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://协议更受限制。 我真的很困惑为什么我会收到这个错误消息,因为git://协议甚至不需要进行身份验证。
现在,GitHub是否只允许通过SSH或HTTPS进行git克隆呢,还是我漏掉了什么?
3个回答

2
我的本地计算机上的gitconfig文件导致了这个问题,我在~/.gitconfig文件中找到了以下两行代码:
[url "ssh://"]
    insteadOf = git://

如果我移除这两行,git://协议将不能通过SSH运行,因此就不会再出现权限问题。

https://askubuntu.com/a/591301/500837 将会将所有的 git:// 替换成 https://。 - feature sky
太有帮助了!由于某种奇怪的原因,我在我的.gitconfig文件中有以下两行代码:[url "git@github. om:"] insteadOf = https://github.com/。我一直想知道为什么它试图联系“github. om”。真是奇怪^^ - jakob.j

0

我在使用Git Bash时遇到了同样的错误,控制台不断输出。

我的解决方法是,在Windows凭据管理器中删除所有与Git相关的条目和我的.gitconfig文件,然后使用Github Desktop的克隆功能。

在Github Desktop中,我需要重置我的凭据(用户名和开发者令牌),这样问题就得以解决。


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: 直接TCP连接(或代理,如果已配置)上的匿名git协议
这是不安全的(没有加密),因此不建议使用。

现在GitHub只允许通过SSH或HTTPS克隆git,或者我错过了什么?

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

像"git://example.org/path/to/repo.git"这样的URL将被重写为"ssh://example.org/path/to/repo.git"以进行推送,但拉取仍将使用原始URL。


我从Github上检查并验证了公钥的正确设置。正如您所看到的,通过SSH和HTTPS进行git克隆没有任何问题。仍然不明白这里的真正问题是什么。 - Chuang Fu
@ChuangFu 你的网络被过滤了吗?Git协议服务器监听9418端口;如果你无法连接到该端口,那就可以解释为什么它无法工作。 - Dan Lowe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接