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

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

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

Я использовал команду git clone git://github.com/myusername/reponame.git


person Solomon    schedule 24.03.2010    source источник
comment
Какую команду вы использовали, чтобы попробовать клонировать частное репо локально? Какие ошибки вы получили?   -  person Ron DeVera    schedule 24.03.2010


Ответы (24)


URL-адреса частных клонов имеют вид [email protected]:username/repo.git - возможно, вам нужно было использовать git@, а не git://?

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

person mac    schedule 29.03.2010
comment
Да - использование [email protected]: вместо https: // решило мою проблему! На самом деле я включил 2FA одновременно, но это не имело к этому никакого отношения. - person leo; 01.03.2019

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

git clone https://[email protected]/username/repo_name

person charlchad    schedule 04.01.2015
comment
Спасибо за это. Но я не понимаю, почему это работает. Никогда не запрашивался пароль. Должен ли git clone через https каким-либо образом касаться моих ключей ssh? Я думал, что нет. - person reinhardt; 31.05.2016
comment
Отлично, это дало мне возможность скачать частное репо на Ubuntu. - person The Onin; 16.08.2016
comment
Почему это работает, а [email protected]: username / repo.git - нет? - person diimdeep; 03.05.2017
comment
@diimdeep Git и другие инструменты часто используют протокол git: для доступа к файлам в удаленных репозиториях. Некоторые конфигурации брандмауэра блокируют URL-адреса git: //, что приводит к ошибкам при попытке клонирования репозиториев или загрузки зависимостей. (Например, корпоративные брандмауэры печально известны тем, что блокируют git :.) Если вы столкнетесь с этой проблемой, вы можете принудительно использовать https: вместо этого, выполнив следующую команду: git config --global url.https: //.insteadOf git : // - person charlchad; 07.10.2017
comment
В некоторых случаях, если вам будет предложено ввести пароль, а затем вам будет отказано в доступе, это может быть связано с тем, что вам нужно предоставить личный токен доступа вместо пароля для входа на GitHub. [1] help.github.com/articles/which- remote-url-should-i-use [2] help.github.com/articles/ - person David Winiecki; 20.04.2018
comment
Ответ неверный, SSH-ключ не имеет отношения к HTTP-доступу. - person Pavel Šimerda; 24.08.2018
comment
работает отлично. Спасибо - person Rajan saha Raju; 10.12.2020
comment
идеальное решение - person ogostos; 04.02.2021

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

Это потому, что у меня включена двухфакторная аутентификация !!!

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

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

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

Обновлять:

  • Если вы не против раскрыть свой токен доступа в командной строке, вы также можете вставить токен доступа в качестве имени пользователя, а затем нажать Enter (вводить пароль не требуется).
  • Ненавидите копировать и вставлять токен доступа снова и снова?
    Используйте git config credential.helper store (не делайте этого на машине, которой вы не доверяете)
person lzl124631x    schedule 24.08.2018
comment
Если вы работаете в Windows, вы можете установить github.com/microsoft/Git-Credential- Manager-for-Windows Затем при клонировании частного репозитория появляется окно пользовательского интерфейса с логином Github. Это также позволит вам заполнить код 2FA. Ваши учетные данные Github будут надежно храниться. - person Jirik; 05.12.2019
comment
Спасибо за это, еще один способ - установить такой формат URL: https://username:[email protected]/username/repo_name.git для меня полезно, если у меня есть публичное репо, которое изменилось на частное. Все, что мне нужно сделать, это изменить удаленное происхождение с этим форматом. - person Alvin Novian; 01.03.2021

У меня это сработало:

git clone https://username:[email protected]/username/repo_name.git
person izik f    schedule 01.10.2017
comment
это проблематично с паролями из специальных символов, оставляет ваш пароль в журналах и, похоже, больше не работает - person pcnate; 30.07.2018
comment
Попробуйте это - вам будет предложено ввести пароль вашей учетной записи. Не беспокойтесь о паролях к истории или журналам. git clone https://[email protected]/username/repo_name.git - person Vinay; 28.03.2019
comment
Аутентификация с использованием паролей будет прекращена с 13 августа 2021 года и после этого больше не будет работать. github.blog/ - person dylanvanw; 07.06.2021
comment
Это по-прежнему будет работать, если вы используете токен персонального доступа, и его можно легко запрограммировать для запроса токена (read -s). - person Milliron X; 17.06.2021

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

git clone https://[email protected]

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

git clone https://[email protected]/ownersusername/repo_name.git

Если у вас 2FA enabled, тогда:

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

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

person Black Mamba    schedule 16.05.2018
comment
похоже, что git запрашивает имя пользователя / пароль, если нет общедоступного репозитория с этим URI, поэтому первая команда верна - person pcnate; 30.07.2018
comment
Где в методе 2FA на шаге 4 находится хост, упомянутый в команде clone? - person Raghu; 30.09.2020
comment
Да, где https://[email protected] - это репозиторий, который вы пытаетесь клонировать, а настройки доступны в ваших собственных пользовательских настройках. - person Black Mamba; 30.09.2020
comment
этот ответ сработал для меня как шарм. Спасибо. - person Elias Prado; 07.05.2021

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

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

person Gustavo Coelho    schedule 10.03.2014
comment
Я согласен с тем, что вам не нужно настраивать ssh - person Félix Adriyel Gagnon-Grenier; 15.09.2015
comment
Согласитесь с другими комментариями, просто использование URL-адреса HTTPS отлично работает в Windows или Ubuntu (пробовал на 116.04) - person greg_data; 04.10.2016

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

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. Я ввел свое имя пользователя и пароль в текстовые поля (это принял мой пароль с символом $) и запросил код двухфакторной аутентификации. Я ввел код аутентификации из Google Authenticator, и клон отлично запустился.

person oneworld    schedule 08.10.2018
comment
Символ доллара $ - зарезервированный символ в Unix. Он отмечает начало извлечения значения переменной с этим именем, равным строке, следующей за символом $. - person Let Me Tink About It; 30.11.2018
comment
Для меня удаление учетных данных Windows решило проблему. - person Michael Larionov; 04.02.2020

Мне нужен был неинтерактивный метод клонирования частного репо.

На основе этой проблемы: https://github.com/github/hub/issues/1644

Шаг 1.

Создайте токен личного доступа в настройках разработчика github: https://github.com/settings/tokens

Шаг 2.

git clone https://$token:[email protected]/$username/$repo.git
person cnash    schedule 29.05.2019

Поскольку все знают о процессе клонирования, я хотел бы добавить сюда еще несколько вещей. Не беспокойтесь о специальных символах или написании @ как% 40 см. Кодировку символов

$ git clone https://username:[email protected]/user/repo   

Эта линия может сделать работу

  1. Предположим, у меня есть пароль, содержащий специальный символ (я не знаю, что заменить на '@' в моем пароле)
  2. Что делать, если я хочу использовать другой временный пароль, отличный от моего исходного пароля

Чтобы решить эту проблему, я рекомендую использовать опцию разработчика GitHub для создания токена доступа. Я считаю, что токен доступа безопасен, и вы не найдете никаких специальных символов.

создание -a-personal-access-token

Теперь я напишу приведенный ниже код для доступа к моему репозиторию.

$ git clone https://username:[email protected]/user/repo

Я просто заменяю свой исходный пароль на токен доступа. Теперь я не волнуюсь, если кто-нибудь увидит мои учетные данные для доступа, я могу восстановить токен, когда когда-нибудь почувствую.

Убедитесь, что вы установили флажок репо Полный доступ к частным репозиториям  вот краткое описание

person Aman Neo    schedule 04.11.2020
comment
хорошо, ответ работает хорошо в google colab, просто измените пароль ур перед тем, как делиться .ipynb файлом :) - person Muneeb Ahmad Khurram; 25.05.2021

При клонировании из частных репозиториев с включенной двухфакторной аутентификацией необходимо выполнить простые шаги.

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

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

person ireshika piyumalie    schedule 16.09.2019

В ответ на ответ Mac вы можете получить URL-адрес клона SSH на странице репозитория github, нажав SSH на You can clone with HTTPS, SSH, or Subversion. и скопировав URL-адрес.

person MK Yung    schedule 07.10.2013

Это сработало для меня на Mac git clone https://[email protected]:username/repo_name

person Usman Hussain    schedule 18.05.2018

В дополнение к ответу MK Yung: убедитесь, что вы добавили открытый ключ везде, где вы развертываете, к ключам развертывания для репо, если вы не хотите получать ответ 403 Forbidden.

person pgcd    schedule 28.09.2014

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

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

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

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

person gcamargo    schedule 11.06.2015

Если вы уверены, что у вас не включена 2FA, у вас есть разрешение на доступ к репо, и репо существует, возможно, ваш [email protected] вошел в систему с другой учетной записью.

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

ssh -T [email protected]

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

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T [email protected]
 git clone [email protected]:<owner_name>/<repo_name>.git
person Kexin Lu    schedule 05.10.2019
comment
Он отображает: unknown option -T. Моя версия git 2.7.4 - person bvdb; 21.10.2019
comment
@bvdb мои извинения, это должно было быть ssh -T [email protected] - person Kexin Lu; 22.10.2019

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

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

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

person Amjad    schedule 24.09.2018

Если вы хотите добиться этого в 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} .
person Youngjae    schedule 24.12.2019

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

git clone https://your_username:[email protected]/username/reponame.git

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

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

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

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

person Santosh Kadam    schedule 08.01.2020

git clone https://myusername:[email protected]/myusername/project.git

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

person divya_kanak    schedule 30.01.2020
comment
Это небезопасно. Клонированное репо сохраняет предоставленную ссылку http в файле .git / config. Все коммиты, сделанные в локальном репо, могут быть перенесены на удаленный сервер, не требуя имени пользователя и пароля. Что действительно опасно, если вы не единственный пользователь !! - person Tian; 24.06.2020
comment
Хорошо, если бы у меня сработало в КОЛАБОРАТОРИИ GOOGLE! - person Farhan Khan; 08.02.2021

Я использовал Android Studio для клонирования проекта из частного репозитория GitHub и двухфакторной аутентификации (2FA). Я создал личный токен как указано в ответе lzl124631x.

Затем я клонировал репо, используя такой URL-адрес: https: // YourGitHubUsername: [email protected]/YourRepoPath.git

person MeLine    schedule 10.09.2020

Я думаю, также стоит упомянуть, что в случае, если протокол SSH не может использоваться по какой-либо причине, и изменение URL-адреса http (s) частного репозитория для предоставления базовых учетных данных также не является вариантом, есть альтернатива.

Заголовок базовой аутентификации можно настроить с помощью _ 1_ параметр git-config:

git config --global --unset-all "http.https://github.com/.extraheader"
git config --global --add "http.https://github.com/.extraheader" \
          "AUTHORIZATION: Basic $(base64 <<< [access-token-string]:x-oauth-basic)"

Где заполнитель [access-token-string] следует заменить (включая квадратные скобки) на сгенерированное реальное значение токена. Вы можете узнать больше о токенах доступа здесь и здесь.

Если конфигурация была применена правильно, то настроенный заголовок AUTHORIZATION будет включаться в каждый HTTPS-запрос на github.com IP-адрес, доступ к которому осуществляется командой git.

person Marcin Kłopotek    schedule 29.10.2020

Добавьте открытый ключ ssh для рабочего стола в github.

https://github.com/settings/keys

Вы можете клонировать репо без пароля.

person Kishore Relangi    schedule 09.02.2018

Клонирование частного репозитория с использованием HTTPS в 2020 году

Если сопровождающий репозитория предоставил разработчику доступ к вам в своей частной библиотеке, вам необходимо сначала войти в систему на https://gitlab.com/users/sign_in с пользователем, для которого вы получили приглашение, вам будет предложено изменить пароль, как только вы меняете свой пароль, тогда вы можете успешно клонировать репозиторий, извлекать и отправлять в него изменения.

person Taimur    schedule 23.08.2020

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

В моем случае это не сработало.

person Sabito 錆兎    schedule 26.12.2020