在一个脚本中,我试图用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

如果我手动尝试使用正确的访问令牌,它仍然要求我输入密码。

如果我在命令行上尝试,我只是得到一个存储库未发现错误。

这篇文章是2012年的,我找不到任何API文档。所以我想知道这个还能不能用。


当前回答

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

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

or

git clone https://username:token@github.com/username/repo.git

其他回答

请尝尝这个。

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

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

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

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

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

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

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

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

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

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

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

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

当提示输入Password时,请填写令牌。

在。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);
        }