GitHub推送失败:新建分支Push时403错误的原因及解决方法
GitHub推送403错误的原因及解决办法
我帮你梳理下这个git push时遇到的403错误,都是日常开发中经常碰到的场景,对应解决方法亲测有效:
1. 仓库权限不足
这是最常见的原因:
- 如果你克隆的是别人的私有仓库,而对方没把你添加为仓库合作者,你只有只读权限,自然推不上去;
- 就算是自己的仓库,也可能因为账号切换后,当前凭证对应的账号没有该仓库权限。
解决步骤:
- 先确认你在GitHub上对这个仓库有推送权限:打开仓库页面,看右上角的「Settings」->「Collaborators and teams」,检查自己的账号是否在列表里;
- 如果是别人的仓库,联系仓库owner添加你为合作者;如果是自己的仓库,确认当前Git使用的账号是仓库的所有者:用
git config user.name和git config user.email检查,不对的话用git config --global user.name "你的GitHub用户名"和git config --global user.email "你的GitHub邮箱"修改。
2. Git凭证缓存过期/错误
GitHub早在2021年就不再支持账号密码直接登录,必须用**个人访问令牌(PAT)**作为密码。如果本地缓存了旧的密码或者过期的PAT,就会触发403。
解决步骤:
- 先清除本地Git的凭证缓存:
- Windows系统:打开命令行输入
git credential-manager-core erase https://github.com - Mac系统:输入
git credential-osxkeychain erase https://github.com - Linux系统:输入
git credential-cache exit
- Windows系统:打开命令行输入
- 重新执行
git push origin new-branch,这时会提示你输入用户名和密码,用户名填你的GitHub账号,密码填你提前生成的PAT(没PAT的话去GitHub的「Settings」->「Developer settings」->「Personal access tokens」新建,记得勾选repo权限)。
3. 使用HTTPS远程地址而非SSH
HTTPS方式容易受凭证和网络影响,而SSH方式更稳定,不需要每次输入凭证。
解决步骤:
- 先检查当前远程地址:输入
git remote -v,如果显示的是https://github.com/xxx/xxx.git就是HTTPS地址; - 换成SSH地址:执行
git remote set-url origin git@github.com:你的用户名/仓库名.git; - 确认本地已经配置了SSH密钥:打开
~/.ssh目录(Windows是C:\Users\你的用户名\.ssh),看有没有id_rsa和id_rsa.pub文件,没有的话用ssh-keygen -t rsa -C "你的GitHub邮箱"生成,然后把id_rsa.pub里的内容复制到GitHub的「Settings」->「SSH and GPG keys」里添加。
4. 网络代理/防火墙拦截
公司内网、VPN或者本地防火墙可能会拦截GitHub的HTTPS请求,导致推送失败。
解决步骤:
- 先切换到手机热点这种不受限制的网络,重新推送试试,如果成功了,就是网络环境的问题;
- 如果必须用代理,配置Git的代理:
- HTTP代理:
git config --global http.proxy http://代理IP:端口 - HTTPS代理:
git config --global https.proxy https://代理IP:端口
- HTTP代理:
- 推送完成后可以取消代理:
git config --global --unset http.proxy和git config --global --unset https.proxy
内容的提问来源于stack exchange,提问作者Joe




