执行git push推送本地项目到GitHub提示403权限被拒绝怎么办?
报错信息:
remote: permission to dlaw-code/Mama-Bili.git denied to dlàw-code.
fatal: unable to access 'https://gitHub.com/dlàw-code/Mama-Bili.git/': The requested URL returned error: 403
问题核心
该错误本质是GitHub验证身份后判定当前登录账号没有目标仓库的写入权限,从报错可首先注意到字符不一致问题:目标仓库所属账号是dlaw-code,而当前发起请求的账号是带声调a的dlàw-code,优先从账号/地址匹配、凭证两个维度排查:
解决步骤
第一步:核对远程仓库地址是否正确
执行命令查看当前项目绑定的远程地址:git remote -v
如果返回的origin地址中用户名、仓库名拼写错误(比如出现带声调的à),执行命令修改为正确地址:git remote set-url origin https://github.com/dlaw-code/Mama-Bili.git
修改完成后重新执行push操作测试。第二步:更新本地Git凭证(HTTPS推送场景)
目前GitHub已不再支持账号密码直接验证HTTPS推送,需要使用个人访问令牌(PAT)验证:- 清空本地旧的Git凭证:Windows系统打开「控制面板→用户账户→凭据管理器→Windows凭据」,删除所有github相关的缓存凭证;Mac系统打开「钥匙串访问」,搜索github删除相关凭证
- 到GitHub账号设置页生成PAT,勾选
repo相关权限后复制令牌 - 重新执行
git push -u origin master,用户名输入正确的dlaw-code,密码输入刚才复制的PAT即可。
第三步:切换为SSH推送方式(可选,无需每次输入验证信息)
- 本地生成SSH密钥,将公钥添加到GitHub账号的SSH密钥列表中
- 执行命令修改远程地址为SSH格式:
git remote set-url origin git@github.com:dlaw-code/Mama-Bili.git - 重新执行push操作即可。
第四步:确认仓库权限
如果目标仓库不属于你本人,需要联系仓库所有者dlaw-code为你的账号开启写入权限;如果是你本人的仓库,确认当前登录的GitHub账号就是dlaw-code,没有误登其他账号。
内容的提问来源于stack exchange,提问作者Dlaw

