Git推送仓库遇HTTPS 403错误,请求排查解决方案
Git HTTPS推送403错误排查与解决
问题详情
推送代码时触发HTTPS 403错误,终端输出如下:
Enumerating objects: 1007, done. Delta compression using up to 8 threads Compressing objects: 100% (264/264), done. Writing objects: 100% (376/376), 139.79 KiB | 3.58 MiB/s, done. Total 376 (delta 278), reused 151 (delta 101), pack-reused 0 error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403 send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly Everything up-to-date
Git版本:
$ git --version git version 2.40.0
附加背景:
- 曾作为项目协作者,1个月前可正常推送,1-2周前突然失效,期间无仓库配置变动
- 已将仓库从用户A转移至自己名下,相同令牌可推送自建仓库,排除凭据无效问题
- 作为仓库所有者,无法推送到关联PR分支,也无法创建新分支
- 仅能使用HTTPS方式,无法切换SSH
可能成因
- 远程URL未更新:仓库转移后,本地Git仍指向原用户A的仓库地址,导致权限验证失败
- 本地凭据缓存冲突:系统缓存了原仓库的旧凭据,Git未自动切换为新仓库的验证信息
- 分支保护规则继承:仓库转移时继承了原分支的保护规则,限制了所有者的直接推送权限
- 令牌权限范围不匹配:令牌虽能访问自建仓库,但未被赋予当前转移后仓库的完整读写权限
解决步骤
1. 检查并更新远程仓库URL
查看当前远程配置:
git remote -v
若显示原用户A的仓库地址,更新为自己名下的HTTPS地址:
git remote set-url origin https://你的用户名/目标仓库名.git
2. 清除本地Git凭据缓存
- Windows:
按提示输入仓库URL完成清除git credential-manager-core erase - macOS:
输入仓库URL、用户名后确认清除git credential-osxkeychain erase - Linux(以libsecret为例):
按提示完成缓存清除git credential-libsecret erase
3. 检查并调整分支保护规则
进入仓库设置页的分支保护规则:
- 确认是否存在禁止所有者直接推送的规则
- 检查是否启用了「需PR审查才能合并」等强制规则,导致无法直接推送PR分支
- 临时禁用规则测试,或调整规则允许所有者推送操作
4. 验证令牌权限
进入令牌管理页面,确认:
- 令牌拥有
repo完整读写权限 - 令牌已被授权访问当前转移后的仓库(部分平台需手动关联令牌与仓库)
5. 基础推送测试
创建测试分支验证权限:
echo "test" > test.txt git add test.txt git commit -m "test push" git checkout -b test-branch git push origin test-branch
若成功,说明原分支问题来自保护规则;若失败,回溯前面步骤排查。
内容的提问来源于stack exchange,提问作者k1r1t0
相关产品推荐
相关产品推荐

