You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:
    git credential-manager-core erase
    
    按提示输入仓库URL完成清除
  • macOS:
    git credential-osxkeychain erase
    
    输入仓库URL、用户名后确认清除
  • 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:57:32