2017-02-14 122 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上偵聽;如果您無法將出站連接到該端口,那就可以解釋爲什麼它不起作用。 –