赞
踩
在 Sourcetree 上使用 git push 代码的时候报错:The requested URL returned error: 403
,表示没有权限来 push 相关代码
如果你之前在 GitHub 配置过 Personal access tokens,也就是 个人访问令牌,那么出现该问题的原因,可能是 token 过期失效,或者是没有配置 token 导致身份验证失败。
事实上,这个问题困扰我许久,网上资料很少,仅有的一些资料也没有解决我的问题。我是在邮箱里看到一封名为 [GitHub] Your personal access token has expired
的邮件,才突然想到有可能是 token 的问题。
为什么会涉及到 token,简单讲一下背景,主要是因为 GitHub 于 2020 年 12 月 15 日在官方博客发布的文章: Token authentication requirements for Git operations。
In July 2020, we announced our intent to require the use of token-based authentication (for example, a personal access, OAuth, or GitHub App installation token) for all authenticated Git operations. Beginning August 13, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.
译过来就是:
2020 年 7 月,我们宣布,我们打算 要求对所有经过身份验证的 Git 操作使用基于令牌的身份验证(例如,个人访问、OAuth 或 GitHub 应用程序安装令牌)。 从 2021 年 8 月 13 日开始,在 GitHub.com 上对 Git 操作进行身份验证时,我们将不再接受帐户密码。
也就是说,2021 年 8 月 13 日之后,我们对 GitHub 上做 Git 操作将无法再使用账户密码来进行身份验证,必须使用基于 token 的身份验证。
这就是为什么开头会讲到 token。
可以看出这项政策才颁布不久,适用的时间也不长,我猜这可能是网上资料比较少的原因。
如果你没有设置过 token,或者忘记怎么设置,可以按下面的操作进行配置:
第一步
进入 GitHub 官网,登陆自己的账号。
单击您的个人资料照片,然后单击 Settings(设置) 。
第二步
在左侧栏中,单击“Developer settings” (开发人员设置)。
第三步
在左侧边栏中,单击 Personal access tokens(个人访问令牌) 。
第四步
单击右上角的 Generate new token(生成新令牌)按钮。
第五步
进入 token 配置页面,给你的 token 设置一个描述性名称。
设置 token 有效期限,默认是 30 天。
第六步
选择你想授予此令牌的范围或权限。要使用令牌从命令行访问存储库,请选择Repo。
最后
点击 Generate token 按钮,完成创建。
警告:将你的令牌视为密码并保留秘密。使用API时,请使用令牌作为环境变量,而不是将它们硬于程序中的程序。
注意:生成的 token 请及时复制下来找个地方保存好,这是因为你再次刷新网页的时候,就没法再看到这个 token 了。切记,切记!
如果你不小心刷新了该页面,但事先却没有复制 token,也不要太担心,删除这个 token,重新创建一个就好了,对,我就是这样做的。
前面我们已经创建了一个 token,但 The requested URL returned error: 403
还没有解决。
下面介绍如何使用 token,来解决这个问题。
第一步
进入你的项目文件夹,打开 .git
文件(如果找不到该文件,那是因为这是一个隐藏文件,一般不显示,可以通过设置显示该文件)
第二步
在 .git
目录中找到 config
文件,并打开。
找到下面的配置
[remote "origin"]
url = https://github.com/username/repo.git
把生成的 token 拼接到 url 上,这个 url 就是你的远程仓库链接。
拼接后的 url:
https://token@github.com/username/repo.git
也就是说 把你的 token
放到 github.com
前,中间用 @
来拼接。
token
就是前文生成的 token。username
是你的 GitHub 用户名。repo
是你的仓库名。修改完之后,保存。
问题解决。
现在可以重新 push 你的代码了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。