解决 Git push 鉴权报错:清理 Windows 凭据死循环
现象
在推代码到 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 发现本地有缓存就不会再触发登录逻辑,直接把错的凭据传给远端,导致持续鉴权失败。
问题分析
-
鉴权外包逻辑 Git 自身不存密码。在 Windows 上,它把鉴权逻辑外包给了 Git Credential Manager (GCM)。GCM 会把你的账号密码托管给操作系统的“凭据管理器”。
-
缓存固化 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 账号信息,导致鉴权不再触发交互;手动删除系统凭据库中的相关记录即可重置登录状态。