三步定位 Git Push 403:从日志到解决
场景回放
凌晨两点,CI 报红:remote: Permission denied (publickey)
。本地 git push
也提示 DeployKey does not support push code
。看似权限不足,实则可能踩了多个坑。
Step 1:确定错误类别
把报错信息套进下图分类,快速锁定方向:
认证/权限 → 403 / publickey / DeployKey
冲突 → non-fast-forward / lock ref 失败
网络 → timeout / 413 / DNS
Step 2:三板斧命令
检查远端地址与协议
git remote -v
查看是https
还是ssh
。如果走 SSH,执行
ssh -T git@gitee.com
验证密钥是否生效;若失败,90% 是密钥权限或仓库未加公钥。
确认本地身份
git config user.name && git config user.email
是否与仓库所有者一致。不一致时,HTTPS 会被 403;SSH 会提示无权限。
检查仓库权限
远端若为组织仓库,需在 Gitee/GitHub 后台把当前账号或 Deploy Key 设为 可写。
Step 3:对症下药
表格
复制
场景 | 命令/操作 | 备注 |
---|---|---|
只读 DeployKey | 仓库 → 管理 → Deploy Key → 勾选 推送权限 | 密钥默认只读 |
非快进拒绝 | git pull --rebase origin master 再 push | 解决历史分叉 |
413 文件过大 | git config --global http.postBuffer 524288000 | 把缓存调到 500 MB |
小结
出现 403 不要硬推,先定位是「钥匙问题」还是「门锁问题」,再针对性解决,可避免 90% 的无效重试。