Клонирование частного репозитория Github


226

У меня есть частный репозиторий на Github для проекта, над которым я работаю. До сих пор я работал только на своем домашнем компьютере, но я только купил ноутбук, и я пытаюсь настроить его так, чтобы я мог работать над проектом с любого компьютера и вносить изменения.

Я добавил новый ключ SSH в свою учетную запись Github для ноутбука, и мне удалось клонировать и внести изменения в публичное тестовое репо, которое я настроил. Однако я не мог клонировать частное репо. Есть ли что-то особенное, что мне нужно сделать в командной строке, чтобы клонировать частное хранилище? Нужно ли мне настраивать новую учетную запись GitHub для моего ноутбука и настраивать себя в качестве соавтора?

Команда, которую я использовал, была git clone git://github.com/myusername/reponame.git


3
Какую команду вы использовали для локального клонирования частного репо? Какие ошибки вы получили?
Рон ДеВера

Ответы:


171

Частные URL-адреса клонов принимают форму git@github.com:username/repo.git- возможно, вам нужно было использовать, git@а не git://?

git:// URL-адреса доступны только для чтения, и, похоже, частные репозитории не разрешают эту форму доступа.


Да - использование «git@github.com:» вместо «https: //» решило мою проблему! На самом деле я включил 2FA одновременно, но это не имело никакого отношения к этому.
Лев

148

Это сработало для меня:

git clone https://username@github.com/username/repo_name

Это, конечно, было после добавления моего ключа SSH в Github . Я использовал это на сервере CentOs, если это необходимо.


4
Спасибо за это. Но я не понимаю, почему это работает. Никогда не запрашивался пароль. Должен ли git clone через https каким-либо образом касаться моих ключей ssh? Я думал, что нет.
reinhardt

1
Хорошо, это позволило мне загрузить частное репо на Ubuntu.
Нино Шкопац

Почему это работает, а git@github.com: username / repo.git - нет?
diimdeep

@diimdeep Git и другие инструменты часто используют протокол git: для доступа к файлам в удаленных репозиториях. Некоторые конфигурации брандмауэра блокируют URL-адреса git: //, что приводит к ошибкам при попытке клонировать репозитории или загрузить зависимости. (Например, корпоративные брандмауэры «печально известны» блокировкой git :.) Если вы столкнулись с этой проблемой, вместо этого вы можете принудительно использовать https: с помощью следующей команды: git config --global url. "Https: // ".insteadOf git: //
charlchad

1
В некоторых случаях, если у вас запрашивают пароль, а затем отказывают в доступе, это может быть связано с тем, что вам нужно предоставить «персональный токен доступа» вместо пароля для входа в GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
Дэвид Винецки

71

Это сработало для меня:

git clone https://username:password@github.com/username/repo_name.git

5
это проблематично со специальными символьными паролями, оставляет ваш пароль в журналах и, кажется, больше не работает
pcnate

5
Попробуйте это - вам будет предложено ввести пароль вашей учетной записи. Не беспокойтесь о изучении пароля к истории или журналам. git clone https://username@github.com/username/repo_name.git
Vinay

64

Я встречал эту проблему несколько раз, и каждый раз, когда я попадал на эту страницу, пробовал все и терпел неудачу!

Это потому что у меня 2FA включен !!!

Согласно https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

Если вы включили  двухфакторную аутентификацию или вы входите в организацию, использующую  единый вход SAML , вы должны  предоставить личный токен доступа  вместо того, чтобы вводить пароль для HTTPS Git.

  1. Перейдите по этой ссылке и создайте токен доступа
  2. git clone https://github.com/username/repo_name.git (Ссылка на репозиторий Git достаточно хороша!)
  3. Введите свое имя пользователя и используйте токен доступа в качестве пароля!

Обновить:

  • Если вы не против выставить свой токен доступа в командной строке, вы также можете вставить токен доступа как имя пользователя и нажать клавишу ввода (пароль не нужен).
  • Ненавижу копировать и вставлять маркер доступа снова и снова?
    Используйте git config credential.helper store(не делайте это на машине, которой вы не доверяете)

Если вы работаете в Windows, вы можете установить github.com/microsoft/Git-Credential-Manager-for-Windows. Затем при клонировании частного репозитория появится окно интерфейса пользователя с именем входа в Github. Это также позволит вам заполнить код 2FA. Ваши учетные данные Github будут надежно храниться.
Jirik

18

Используя Git для Windows, проще использовать HTTPS url.

Откройте git shell тогда git clone https://github.com/user/repo. Введите имя пользователя и пароль при появлении запроса. Нет необходимости устанавливать ключ SSH.


1
Я согласен с простотой того, что не нужно настраивать ssh
Феликс Ганьон-Гренье

Согласитесь с другими комментариями, просто использование HTTPS url отлично работает на Windows или Ubuntu (пробовал на 116.04)
greg_data

18

Для меня решение было:

git clone https://myusername@restoftherepolink.git

Здесь вы должны быть владельцем репо, но если вы этого не сделаете, он пойдет как

git clone https://myusername@github.com/ownersusername/repo_name.git

Если у вас есть2FA enabled то:

  1. Перейдите в настройки из значка профиля в правом верхнем углу или посетите https://github.com/settings/profile
  2. Перейдите на нижнюю вкладку или перейдите на https://github.com/settings/tokens.
  3. Откройте последнюю вкладку здесь Личные токены. И сгенерировать токен
  4. Скопируйте токен и запустите git clone https://myusername@restoftherepolink.git

Когда появится запрос на ввод пароля, введите этот токен здесь. Изображение генерации токена здесь


1
Похоже, git запрашивает имя пользователя / пароль, если нет публичного репозитория с таким URI, поэтому первая команда верна
pcnate

8

У меня есть корпоративная (частная) учетная запись и включена двухфакторная аутентификация, поэтому мне пришлось объединить несколько постов, чтобы она работала, как показано ниже. (Записываю, так что это может быть полезно для кого-то с такой же ситуацией)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Установил менеджер учетных данных и обновил GIT, как указано здесь: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Это не решило проблему, поскольку проблема перешла к приведенному ниже, когда я попытался использовать команду clone следующим образом:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

В моем пароле был символ $, и по какой-то причине в командной строке GIT / GIT Bash это не понравилось. Я вижу это по возвращенному тексту ошибки, в котором нет символа $.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Я должен был сослаться на этот сайт: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Обратите внимание: если неверный пароль для вашей учетной записи будет сохранен в диспетчере учетных данных Windows, это также усугубит проблему. Я удалил сохраненные таким образом учетные данные github, прежде чем перейти к шагу ниже.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Теперь диспетчер учетных данных Windows появился. Я напечатал свое имя пользователя и пароль в текстовых полях (Это принимало мой пароль с символом $) и предложило мне ввести код 2-факторной аутентификации. Я набрал код аутентификации от Google Authenticator, и клон запустился отлично.


Символ доллара $является зарезервированным символом в Unix. Он отмечает начало поиска значения переменной с таким именем, равным строке, следующей за $символом.
Дайте мне об этом

Для меня удаление учетных данных Windows решило проблему.
Михаил Ларионов

6

При клонировании из частных репозиториев с включенным 2FA есть простые шаги, которые необходимо выполнить

  1. Зайдите в свой аккаунт Git
  2. Зайдите в Настройки-> Настройки разработчика-> Токен личного доступа
  3. Нажмите на Создать новый токен
  4. Создайте токен с нужным названием и функциями
  5. Когда вы клонируете частный репозиторий, с помощью git clone repoName после ввода имени пользователя укажите персональный токен доступа в качестве пароля.

Выполните те же шаги, когда вы получаете сообщение об ошибке аутентификации не удалось для частного репо


5

В ответ на ответ Мака, вы можете получить SSH клон URL на вашем GitHub репо страницу, нажав SSHна You can clone with HTTPS, SSH, or Subversion.и скопировать URL.



3

В дополнение к ответу М.К. Юнга: убедитесь, что вы добавили открытый ключ для тех мест, где вы развертываете ключи развертывания для репозитория, если вы не хотите получать 403 Запрещенный ответ.


3

Сначала убедитесь, что у вас есть ключ SSH или сгенерируйте его по адресу: https://help.github.com/articles/generating-ssh-keys/

Получив ключ, вы должны добавить его в свою учетную запись github по адресу: https://github.com/settings/ssh.

Для пользователей Windows полезно запускать git bash от имени администратора.

Теперь клонирование должно работать для частных репозиториев (репо), без необходимости ввода вашего имени пользователя и пароля.



1

Если недавно использованный компьютер имеет другие учетные данные, запустив эту команду

git clone https://github.com/username/reponame.git

напрямую не сработает. Git попытается использовать сохраненные учетные данные и не будет запрашивать у вас имя пользователя и пароль. Поскольку учетные данные не совпадают, git выведет Repository not foundи операция клонирования завершится неудачно. Я решил это, удалив старые учетные данные, поскольку я их больше не использую, и снова выполнил вышеупомянутую команду, ввел необходимые имя пользователя и пароль и клонировал частное хранилище.


1

1) попробуйте запустить команду с именем пользователя и паролем в следующем формате

git clone https://your_username:your_password@github.com/username/reponame.git

Теперь проблема, как уже упоминали другие, заключается в том, что в нашем пароле есть специальный символ. В Javascript используйте приведенный ниже код для преобразования пароля со специальными символами в кодировку UTF-8.

console.log(encodeURIComponent('password@$123'));

Теперь используйте этот сгенерированный пароль вместо пароля со специальными символами и запустите команду.

Надеюсь, что это решить проблему.



0

Если вы уверены, что у вас не включен 2FA, у вас есть разрешение на доступ к репо, и репозиторий существует, возможно, ваш git@github.com вошел в систему с другой учетной записью.

чтобы проверить, что ты можешь сделать

ssh -T git@github.com

Если он показывает другую учетную запись, чтобы решить эту проблему:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

Он показывает: unknown option -T. Моя версия git2.7.4
bvdb

@bvdb мои извинения, это должно было бытьssh -T git@github.com
Кексин Лу

0

Если вы хотите добиться этого в следующих Dockerfileпунктах.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Тогда мы можем построить с аргументом ниже.

docker build --build-arg git_personal_token={your_token} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

Когда вы пытаетесь использовать частное репо из репо, вам нужно передать для этого имя пользователя и пароль.


Это не безопасно. Клонированное хранилище сохраняет предоставленную ссылку http в файле .git / config. Все коммиты, сделанные в локальный репозиторий, могут быть переданы на удаленный компьютер без указания имени пользователя и пароля. Что действительно опасно, если вы не единственный пользователь!
Тиан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.