Клонирование частного репозитория 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.