Клонування приватного репоту 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 через https будь-яким чином торкатися моїх ssh клавіш? Я думав, що ні.
Рейнхардт

1
Приємно, що мені вдалося завантажити приватне репо на Ubuntu.
Ніно Шкопак

Чому це працює, але не git@github.com: ім'я користувача / repo.git ні?
заглиблення

@diimdeep Git та інші інструменти, часто використовують протокол git: для доступу до файлів у віддалених сховищах. Деякі конфігурації брандмауера блокують URL-адреси git: //, що призводить до помилок при спробі клонування сховищ або завантаження залежностей. (Наприклад, корпоративні брандмауери є "горезвісними" для блокування git: ".insteadOf git: //
charlchad

1
У деяких випадках, якщо вам буде запропоновано ввести пароль, а потім відмовити у доступі, це може бути через те, що вам потрібно надати "особистий маркер доступу" замість вашого пароля для входу в GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki

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
Вини

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 repo досить добре!)
  3. Введіть своє ім’я користувача та використовуйте маркер доступу як пароль !!

Оновлення:

  • Якщо ви не заперечуєте над тим, щоб відкрити маркер доступу в командному рядку, ви також можете вставити маркер доступу як ім'я користувача, а потім натисніть клавішу Enter enter (не потрібно вводити пароль).
  • Ненавиджу копіювати та вставляти маркер доступу знову і знову?
    Використовуйте git config credential.helper store(не робіть цього на машині, якій ви не довіряєте)

Якщо ви перебуваєте в Windows, ви можете встановити github.com/microsoft/Git-Credential-Manager-for-Windows. Після клонування приватного сховища з'явиться вікно інтерфейсу користувача з логіном Github. Це також дозволить заповнити 2FA-код. Ваші облікові дані Github надійно зберігатимуться.
Ірік

18

Використовуючи Git для Windows, простіше використовувати URL-адресу HTTPS.

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


1
Я погоджуюся з простотою того, що не потрібно налаштовувати ssh
Félix Gagnon-Grenier

Погодьтеся з іншими коментарями, просто використання URL-адреси HTTPS ідеально підходить для 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

У мене є аккаунт компанії (приватний) та ввімкнено 2-факторну автентифікацію, тому мені довелося об'єднати кілька дописів, щоб воно працювало як нижче. (Записування, щоб воно могло бути корисним тому, хто має таку ж ситуацію)

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

На додаток до відповіді MK Yung: переконайтеся, що ви додали відкритий ключ туди, де ви розгортаєтесь, до ключів розгортання для репо, якщо ви не хочете отримувати відповідь 403 Заборонено.


3

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

Щойно у вас є ключ, його потрібно додати до свого облікового запису github за адресою: https://github.com/settings/ssh

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

Тепер клонування має працювати для приватних сховищ (репо), без необхідності вводити своє ім’я користувача та пароль.


3

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

Натхненний цим номером: https://github.com/github/hub/isissue/1644

Крок 1.

Створіть особистий маркер доступу в налаштуваннях розробника github: https://github.com/settings/tokens

Крок 2.

git clone https://$token:x-oauth-basic@github.com/$username/$repo.git

1

Якщо щойно використаний комп'ютер має різні облікові дані, виконуючи цю команду

клон git 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.