GitHub Clone with OAuth Access Token
GitGithubOauthGit Problem Overview
Inside a script I am trying to clone a GitHub repository with an OAuth token.
According to this tutorial:
https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth
I should be able to build a command for it like this:
git clone https://<token>@github.com/owner/repo.git
If I try this manually with a proper access token, it still asks for my password.
If I try it on the commandline I am simply getting a repository not found
error.
The article is from 2012 and I cannot find any API documentation for this. So I am wondering if this still works.
Git Solutions
Solution 1 - Git
Just use the HTTPS address to clone with the key as the user, so:
git clone https://[email protected]/username/repo.git
Solution 2 - Git
I turned out to be a scope issue. I of course needed full repo
scope since I was trying to clone a private
repository.
It's a shame Github does not have some clearer error messages for these kind of things, but security wise I understand why.
For anyone trying to figure out what is wrong when trying out something like this, I would suggest to create a personal access token with full access to everything:
> settings > developer settings > personal access tokens > generate new token
This way you can easily test if it is a scope issue by comparing your token with a personal access token that has access rights for everything.
Thanks for anyone who still took the time to read this.
Solution 3 - Git
Just clone the repository with HTTP like so:
git clone https://github.com/myuser/myrepo.git
When prompted for Username, fill your username.
When prompted for Password, fill the token instead.
Solution 4 - Git
Do whatever works for you from these two choices
In your terminal
$ git clone your_repo_url Username:your_token Password:
... there is no password
In your git client app
i.e. Sourcetree, GitKraken, and the GitHub client.
Enter your repo_url (obvsiously without the '$ git clone part')
Username:your_token Password:
... there is no password
OR i.e. in Sourcetree, open preferences and then go to advanced, enter the hostname (i.e. www.x.com) and userName (i.e. your_token)
ļ
Solution 5 - Git
Please try this.
git clone `https://oauth2:[email protected]/username/repo.git`
For example, git clone https://oauth2:[email protected]/gituser/testrepo.git
Solution 6 - Git
go to https://github.com/settings/tokens and generate a new token, remember to enable access to the repo, after that, you can do the following to clone the repo.
git clone https://<token>@github.com/owner/repo.git
Note: owner is your username if it's your repository else keep username of repository owner(one with all the rights of repo).
Solution 7 - Git
In .net core you can do in this way when dealing with Azure DevOps Repo:
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);
}
Solution 8 - Git
For me none of the answers above worked. It turns out I had set an expiration of one month on my token so I had to recreate the token using the instructions here: https://www.shanebart.com/clone-repo-using-token/