GitHub克隆与OAuth访问令牌

在一个脚本中,我试图用OAuth令牌克隆一个GitHub存储库。

根据本教程:

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文档。所以我想知道这个还能不能用。

375172 次浏览

我原来是一个范围问题。我当然需要完整的repo范围,因为我试图克隆一个private存储库。

很遗憾Github没有针对这类事情提供更清晰的错误信息,但从安全角度来看,我理解其中的原因。

对于那些试图在尝试这样的事情时找出问题所在的人来说,我建议创建一个个人访问令牌,可以完全访问所有内容:

设置>开发人员设置>个人访问令牌>生成新的令牌

通过将您的令牌与具有所有访问权限的个人访问令牌进行比较,您可以轻松测试这是否是范围问题。

感谢所有花时间阅读这篇文章的人。

这两种选择对你有什么好处

在你的终端

$ git克隆your_repo_url 用户名:your_token 密码:< /代码> < / p >

... 没有密码

在git客户端应用程序中

例如Sourcetree, GitKraken和GitHub客户端。

输入您的repo_url(显然没有'$ git克隆部分')

< p > <代码>用户名:your_token 密码:< /代码> < / p >

... 没有密码

< >强或 即在Sourcetree中,打开首选项,然后进入高级,输入主机名(即www.x.com)和用户名(即your_token)

enter image description here

👍

在。net core中,当你处理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);
}

只需要像这样用HTTP克隆存储库:

git clone https://github.com/myuser/myrepo.git

当提示输入用户名时,填写您的用户名。

当提示输入Password时,取而代之的是填充令牌

只需使用HTTPS地址以用户身份使用密钥进行克隆,因此:

git clone https://oauth-key-goes-here@github.com/username/repo.git

https://github.com/settings/tokens并生成一个新的令牌,记住要启用对repo的访问,之后,你可以执行以下操作来克隆repo。

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

注意:如果是你的存储库,owner是你的用户名,否则保留存储库所有者的用户名(拥有所有的回购权)。

请尝尝这个。

git clone `https://oauth2:TOKEN@github.com/username/repo.git`

例如,git clone https://oauth2:ghp_...Gnm61dm4rh@github.com/gituser/testrepo.git

对我来说,上面的答案都没用。原来我在令牌上设置了一个月的到期时间,所以我必须使用这里的指令重新创建令牌:https://www.shanebart.com/clone-repo-using-token/