Клон Github с токеном доступа oauth

Внутри скрипта я пытаюсь клонировать репозиторий Github с маркером oauth.

Согласно этому уроку:

https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth

Я должен быть в состоянии построить команду для этого так:

git clone https://<token>@github.com/owner/repo.git

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

Если я пробую это в командной строке, я просто получаю ошибку repository not found.

Статья написана в 2012 году, и я не могу найти документацию по API для этого. Поэтому мне интересно, если это все еще работает.

Ответ 1

Я оказался проблемой с объемом. Мне, конечно, нужна полная область repo, так как я пытался клонировать репозиторий private.

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

Для тех, кто пытается выяснить, что не так, когда вы пытаетесь что-то вроде этого, я предлагаю создать токен доступа с полным доступом ко всему:

настройки > параметры разработчикa > токены доступa > генерировать новый токен

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

Спасибо всем, кто еще нашел время, чтобы прочитать это.

Ответ 2

Делайте все, что работает для вас из этих двух вариантов

В вашем терминале

$ git clone your_repo_url Username:your_token Password:

... нет пароля

В вашем клиентском приложении git

то есть Sourcetree, GitKraken и клиент GitHub.

Введите ваш repo_url (очевидно, без '$ git clone part')

Username:your_token Password:

... нет пароля

ИЛИ, то есть в Sourcetree, откройте настройки, а затем перейдите в раздел "Дополнительно", введите имя хоста (например, www.x.com) и имя пользователя (то есть your_token).

enter image description here

👍

Ответ 3

В ядре .net вы можете сделать это при работе с репо Azure DevOps:

 public void CloneRepository()
        {
            var _gitURL = "URLofGitRemoteRepository";
            var _userName = "PersonalAccessToken";
            var _pswd = ""; //Keep it blank

            var co = new CloneOptions();
            co.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = _userName, Password = _pswd };

            Repository.Clone(_gitURL, filePath, co);
        }