切换Visual Studio账号后GitHub凭证损坏 无法推送代码到远程仓库
可用修复方案
临时变通方案(可立刻恢复推送)
- 把PAT直接嵌入远程仓库地址,仅对当前仓库生效,执行命令:
git remote set-url origin https://<你的GitHub用户名>:<你的PAT>@github.com/<你的用户名>/<目标仓库名>.git
修改完成后直接执行git push origin master即可正常推送,不需要额外验证。 - 不想修改远程地址的话,可以在当前命令行会话临时禁用系统弹窗验证,执行:
set GIT_ASKPASS=
之后再运行push命令,直接在命令行输入用户名和PAT即可完成验证,不会被第三方凭据程序拦截。
永久修复方案
- 先检查全局git凭据配置,确认是否被修改,执行命令:
git config --global --list | findstr credential.helper - 切换VS账号大概率会把默认凭据助手替换为VS自带的GitHub验证模块,如果输出结果不是
wincred或者manager-core,执行以下命令改回系统默认凭据管理器:git config --global credential.helper wincred - 打开Windows凭据管理器,删除所有前缀为
git:https://github.com的通用凭据,重新添加时注意地址要写全git:https://github.com(不要漏掉https后的冒号,你之前的配置示例里漏了这个符号,也可能是本次失效的原因),用户名填GitHub用户名,密码填新生成的PAT即可。 - 配置完成后随便找一个仓库执行一次
git push,验证配置生效即可。
问题原因与预防方案
可以完全确认该问题是切换Visual Studio账号导致的。VS切换账号时会默认修改全局git的凭据助手配置,替换为VS自带的GitHub身份验证模块,该模块会优先读取VS当前登录账号的身份信息,和你本地配置的GitHub PAT冲突,所以即使手动修改了Windows凭据管理器的内容也不会生效。
避免再次发生的方法
- 每次切换VS账号后,第一时间检查git全局凭据配置,如果被修改就手动改回
wincred,不使用VS自带的git凭据管理能力。 - 安装或更新Visual Studio时,取消勾选「GitHub凭据提供程序」可选组件,从根源避免VS修改git配置。
- 也可以直接在全局git配置文件
C:\Users\<你的用户名>\.gitconfig中固定credential.helper的配置,禁止其他程序修改该字段。
内容的提问来源于stack exchange,提问作者Martin Vaughan
相关产品推荐
相关产品推荐

