You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

GitHub推送失败:新建分支Push时403错误的原因及解决方法

GitHub推送403错误的原因及解决办法

我帮你梳理下这个git push时遇到的403错误,都是日常开发中经常碰到的场景,对应解决方法亲测有效:

1. 仓库权限不足

这是最常见的原因:

  • 如果你克隆的是别人的私有仓库,而对方没把你添加为仓库合作者,你只有只读权限,自然推不上去;
  • 就算是自己的仓库,也可能因为账号切换后,当前凭证对应的账号没有该仓库权限。

解决步骤

  • 先确认你在GitHub上对这个仓库有推送权限:打开仓库页面,看右上角的「Settings」->「Collaborators and teams」,检查自己的账号是否在列表里;
  • 如果是别人的仓库,联系仓库owner添加你为合作者;如果是自己的仓库,确认当前Git使用的账号是仓库的所有者:用git config user.namegit 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
  • 重新执行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_rsaid_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:端口
  • 推送完成后可以取消代理:git config --global --unset http.proxygit config --global --unset https.proxy

内容的提问来源于stack exchange,提问作者Joe

火山引擎 最新活动