Mac下Git Push报403权限被拒错误,求解决方法
排查步骤
检查远程仓库URL一致性
执行git remote -v查看当前仓库的origin地址,确保和Linux服务器上的URL完全一致,注意GitHub Enterprise的仓库路径区分大小写,避免因路径拼写/大小写错误导致权限验证失败。验证精细粒度令牌的仓库权限
登录企业GitHub后台,进入「个人设置→开发者设置→精细粒度令牌」,找到对应令牌:- 确认「Repository access」选项是否包含目标仓库
<top folder>/xyz.git(选择「All repositories in the organization」或明确指定该仓库); - 检查仓库权限部分是否开启了「Contents」的「Write」权限(push操作需要该权限)。
- 确认「Repository access」选项是否包含目标仓库
强制使用gh凭证助手
已安装GitHub CLI(gh)且认证成功的情况下,执行以下命令强制Git使用gh的凭证管理:git config --global credential.helper "gh"之后重新执行
git push,确保使用gh已认证的会话凭证。用curl测试令牌有效性
执行以下curl命令验证令牌对仓库push端点的访问权限:curl -u myuser:<你的精细粒度令牌> https://<company's github ent server>/<top folder>/xyz.git/info/refs?service=git-receive-pack- 返回正常Git refs信息:令牌权限有效,问题出在Git凭证传递环节;
- 返回403:令牌本身无push权限,需联系管理员确认组织/仓库权限设置。
排查系统代理与防火墙
- 暂时关闭Mac的全局代理(包括系统代理、第三方代理工具),重新尝试push,避免代理拦截或修改HTTP授权头;
- 确认本地防火墙未阻止Git访问企业GitHub服务器的443端口。
查看Git详细请求日志
执行以下命令获取push过程的详细HTTP日志,重点检查Authorization头是否正确携带令牌,以及服务器返回的具体错误细节:GIT_CURL_VERBOSE=1 git push origin "skm/build_improvements"确认组织/仓库权限配置
联系企业GitHub组织管理员:- 确认你的账号在
<top folder>组织下拥有仓库的写入权限; - 检查是否存在IP白名单限制(Linux服务器IP在白名单,Mac IP未加入);
- 确认仓库的分支保护规则是否限制了
skm/build_improvements分支的push权限。
- 确认你的账号在
仓库本地配置凭证
进入仓库目录,执行以下命令设置本地凭证助手,确保仓库级配置覆盖全局配置:git config credential.manager store之后重新执行push,按提示输入令牌,完成本地凭证存储。
内容的提问来源于stack exchange,提问作者ShaileshM
相关产品推荐
相关产品推荐

