2017-02-14 13 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 только разрешенным git-клоном через SSH или HTTPS или я что-то пропустил?

ответ

0

Файл gitconfig в моем локальном компьютере вызвало эту проблему, я нашел следующие две строки в ~/.gitconfig файла:

[url "ssh://"] 
    insteadOf = 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: анонимный протокол мерзавец через прямое соединение TCP (или прокси-сервер, если он сконфигурирован)

Это небезопасно (без шифрования), поэтому его не рекомендуется использовать.

Действительно ли github разрешает git-клонировать через SSH или HTTPS сейчас, или я что-то пропустил?

Предпочтительный способ - использовать SSH или HTTPS, потому что вы всегда подключаетесь к небезопасному Интернету (если вы не находитесь в центре обработки данных GitHub - маловероятно). Протокол git может пригодиться в интрасетях или локальных сетях, которым вы доверяете. Также отметим, что

URL, как "мерзавца: //example.org/path/to/repo.git" будет переписана "SSH: //example.org/path/to/repo.git" для нажатий, но pulls по-прежнему будет использовать исходный URL.

+0

Я проверил у github и проверил, что открытый ключ настроен правильно. Как вы можете видеть, нет проблемы с git clone через SSH и HTTPS. Все еще не понимаю, что здесь представляет собой настоящая проблема –

+0

@ChuangFu Отфильтрована ваша сеть? Сервер протокола git прослушивает порт 9418; если вы не можете подключиться к этому порту, это объяснит, почему он не работает. –