解决 Git push 鉴权报错:清理 Windows 凭据死循环

解决 Git push 鉴权报错:清理 Windows 凭据死循环


DevOps
Git Troubleshooting Windows DevOps

现象

在推代码到 Gitee 或 GitHub 时,如果第一次弹出的黑色授权框里输错了密码,后续执行 git push 会直接报错:

remote: Incorrect username or password (access token)
fatal: Authentication failed for '[https://gitee.com/xxx.git/](https://gitee.com/xxx.git/)'

最麻烦的是,系统之后再也不会弹出输入框让你重试,而是直接拿那个错误的缓存去撞墙,导致逻辑死锁。

核心结论

这是因为 Windows 凭据管理器缓存了错误的账号信息。Git 发现本地有缓存就不会再触发登录逻辑,直接把错的凭据传给远端,导致持续鉴权失败。

问题分析

  1. 鉴权外包逻辑 Git 自身不存密码。在 Windows 上,它把鉴权逻辑外包给了 Git Credential Manager (GCM)。GCM 会把你的账号密码托管给操作系统的“凭据管理器”。

  2. 缓存固化 Windows 凭据管理器的逻辑比较死: 只要里面存了对应域名的记录,GCM 就会直接提取并发送。 凭据管理器只负责存取,不负责验证。哪怕服务器返回了 401 错误,只要你不手动删掉这条记录,它就会一直提交错误数据。

解决方法

不要折腾 Git 配置文件,直接清理系统底层缓存。

步骤 1:清理 Windows 凭据 按 Win 键,搜索 凭据管理器 并打开。 选择 Windows 凭据。 在“普通凭据”列表里找 git:https://gitee.com 或 git:https://github.com。

点击 删除,彻底清空该域名的缓存。

步骤 2:重新触发鉴权 回到终端,再次执行推送:

git push -u origin main

此时 GCM 发现本地没有可用凭据,会重新弹出登录框。

注意事项:推荐使用 Token

2026 年,主流代码托管平台(GitHub/Gitee)已经基本废弃了明文密码推送。在重新弹出的窗口中,建议使用 Personal Access Token (PAT) 代替登录密码。这能避免因账号开启双重验证(2FA)导致的鉴权死循环。


核心结论

Windows 凭据管理器固化了错误的 Git 账号信息,导致鉴权不再触发交互;手动删除系统凭据库中的相关记录即可重置登录状态。

© 2026 Personal Website
Developed by Ryan 🫡