Git push 报错 Authentication failed 是因操作系统凭据管理器中旧凭证未清除,需在 Windows 凭据管理器或 macOS 钥匙串中删除对应 git 域名条目,并执行 git credential reject 清缓存;GitHub/GitLab 必须使用 Personal Access Token 替代密码。

Git push 报错 Authentication failed 是凭证过期或错乱了
VSCode 底层调用的是系统 Git,它用的是操作系统级别的凭据管理器(Windows Credential Manager、macOS Keychain、Linux GNOME Keyring 或 libsecret),不是 VSCode 自己存的。所以改 VSCode 设置没用,得清操作系统的 Git 凭证缓存。
Windows 上怎么删 Git 凭据(最常见场景)
错误现象:点 VSCode 的“推送”按钮后弹窗报 Authentication failed,或者终端里 git push 直接拒绝,但你确定密码/Token 没输错——大概率是旧凭据卡在 Windows 凭据管理器里了。
- 打开 Windows 搜索,输入「凭据管理器」→ 进入「Windows 凭据」→ 找「普通凭据」分组
- 往下拉,找所有以
git:https://github.com、git:https://gitlab.com或你用的 Git 域名开头的条目 - 逐个点开 → 「删除」(别只改密码,旧凭据残留会导致新 Token 被忽略)
- 删完后,下次
git push或 VSCode 推送时会重新弹窗要你输账号和 Token
macOS 上清除 Keychain 里的 Git 凭据
macOS 默认用 Keychain 存 Git 凭证,但有时 Keychain 条目状态异常(比如标记为“已过期”却没自动清理),导致 Git 死活不用新 Token。
- 打开「钥匙串访问」App → 左侧选「登录」钥匙串 → 右上角搜索框输
git - 找到类型为
internet password、服务器字段含github.com或你仓库域名的条目 - 双击打开 → 勾选「显示密码」(需输系统密码)确认是不是旧账号;确认后直接右键「删除」
- 删完别忘了在终端执行一次:
git credential reject,然后按提示输:protocol=https host=github.com
再回车(这步能清 Git 自己的内存缓存)
为什么用 Personal Access Token 而不是密码?
GitHub、GitLab 等平台早已停用账户密码直连 Git(HTTPS 方式)。如果你还在输密码,Git 实际收到的是 403,但错误信息常被模糊成 Authentication failed,让人误以为是网络或配置问题。
- GitHub 必须用
Personal Access Token(PAT),且勾选repo和workflow权限(如果用 Actions) - GitLab 对应的是
Personal Access Token,权限至少选api和read_repository - Token 要当密码用:在 VSCode 弹窗里,用户名填你的 GitHub/GitLab 账号,密码栏粘贴 Token(不是密码!)
- Token 泄露风险高,别硬编码进脚本或提交到仓库;用完及时在平台页面 revoke
最容易被忽略的是:删完凭据后,VSCode 不一定会立刻重试认证——关掉当前仓库窗口,重启 VSCode,再打开项目,第一次 push 才会真正触发新登录流程。否则它可能还在用 Git 内部缓存的失败状态。


















