Git 报错 fatal: repository not found 403 怎么办?怎么排查?

文章导读
遇到 Git 报错 fatal: repository not found 伴随 403 状态码,大概率是权限验证失败。虽然报错信息提示“仓库未找到”,但 HTTP 403 实际代表“禁止访问”,通常不是仓库不存在(那是 404),而是当前账号没有读取权限或密码已失效。
📋 目录
  1. 开启 verbose 模式确认状态码
  2. 分步处理方案
  3. 替代方案:配置 SSH 免密
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

遇到 Git 报错 fatal: repository not found 伴随 403 状态码,大概率是权限验证失败。虽然报错信息提示“仓库未找到”,但 HTTP 403 实际代表“禁止访问”,通常不是仓库不存在(那是 404),而是当前账号没有读取权限或密码已失效。

先说结论:403 代表服务器拒绝访问,优先检查远程 URL 拼写和个人访问令牌(Token)。

  • 确认远程仓库地址是否拼写正确(区分 403 与 404)
  • 清除本地保存的旧凭证或更换 Token
  • 验证能否正常拉取代码

开启 verbose 模式确认状态码

为了区分是仓库真的不存在(404)还是权限问题(403),建议开启 Git 的 curl verbose 模式查看具体 HTTP 响应:

GIT_CURL_VERBOSE=1 git pull

观察输出日志中的 HTTP 状态码。如果是 404,请检查仓库地址是否迁移或删除;如果是 403,则按以下步骤修复认证。

分步处理方案

1. 检查远程地址

运行 git remote -v 查看当前配置的 URL。确认仓库名称、所有者拼写无误,且协议是 HTTPS 或 SSH。如果仓库已迁移或改名,旧地址会报 404 或 403。

2. 清除旧凭证(关键步骤)

Git 报错 fatal: repository not found 403 怎么办?怎么排查?

不同操作系统清除缓存凭证的方式不同,请根据环境选择:

  • Windows:打开“凭据管理器” -> "Windows 凭据”,找到 git 相关条目(如 git:https://github.com)并删除。
  • Mac:使用以下命令清除特定主机的缓存(需输入协议和主机信息):
    printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
  • Linux:建议先查看当前使用的 credential helper,再针对性清除:
    git config `--global` credential.helper
    若使用 store 模式,可尝试:
    git credential reject
    然后输入对应的主机信息。

3. 更新认证信息

如果使用 HTTPS,不要输入登录密码。去平台设置里生成一个新的 Personal Access Token,勾选 repo 权限。在 Git 提示输入密码时粘贴该 Token。

替代方案:配置 SSH 免密

为避免频繁处理密码或 Token 过期问题,建议配置 SSH 密钥:

ssh-keygen -t ed25519 -C "your_email@example.com"
# 将公钥添加到代码平台设置
ssh -T git@github.com

测试连通成功后,将远程 URL 改为 SSH 地址:git remote set-url origin git@github.com:user/repo.git

怎么验证是否生效

执行 git fetchgit pull。如果命令成功执行且没有提示输入密码或报错,说明认证已修复。也可以尝试 git ls-remote <仓库 URL> 测试连接。

常见坑

  • Token 权限不足:生成 Token 时未勾选 repo 或 read 权限。
  • SSH 密钥未加载:如果使用 SSH 协议,确保公钥已添加到平台,且本地私钥权限正确(chmod 600)。
  • 企业代理干扰:公司内部网络可能拦截 Git 请求,导致认证失败,需确认代理配置。

参考来源

  • GitHub Docs: About authentication to GitHub - https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-authentication-to-github
  • Git SCM: git-credential Documentation - https://git-scm.com/docs/git-credential