You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Git全局配置改新GitHub账号,仍用旧账号推送报错

解决GitHub推送时错误调用旧账号的问题

看起来你遇到的是典型的账号凭据冲突问题,虽然全局配置改了新账号,但系统里还残留着旧账号的验证信息,导致推送时还是用旧账号身份。我帮你一步步排查解决:

1. 优先清理Windows凭据管理器中的旧GitHub凭据

这是Windows用户最常踩的坑——当你用HTTPS克隆仓库时,Windows会自动把GitHub账号密码存在「凭据管理器」里,哪怕后来改了全局配置或者换成SSH,系统还是会优先调用这个缓存的旧凭据。

解决步骤:

  • 按下Win+S,搜索「凭据管理器」并打开
  • 切换到「Windows凭据」标签页
  • 找到所有和github.com相关的条目(比如名称为git:https://github.com的项)
  • 右键点击这些条目,选择「删除」

删除后再尝试推送,系统会重新要求验证身份,这时候确保用新账号信息或SSH方式即可。

2. 验证SSH连接的身份是否正确

你说新账号关联了SSH密钥,但推送仍报错,先确认当前SSH连接用的是哪个账号:
在Git Bash里运行:

ssh -T git@github.com

如果返回Hi old! You've successfully authenticated...,说明当前SSH默认加载的是旧账号的密钥。此时需要配置SSH的config文件来区分账号:

  • 在用户目录的.ssh文件夹(比如C:\Users\你的用户名\.ssh)创建config文件(无后缀名)
  • 写入以下内容:
    Host github-new
        HostName github.com
        User git
        IdentityFile ~/.ssh/你的新账号私钥文件名  # 比如id_rsa_new,确保是关联新账号的密钥
    
  • 之后克隆新账号仓库时,用这个自定义Host:
    git clone git@github-new:new/test.git
    
    这样Git就会指定用新密钥连接GitHub,不会再混用旧账号。

3. 检查本地仓库的局部配置和远程地址

虽然权限问题主要是身份验证,但也可以快速排查:

  • 进入仓库,运行git config --local -l,查看是否有user.name或user.email被设为旧账号(如果有,用git config --local user.name "new"和git config --local user.email "new@new.com"修改)
  • 运行git remote -v,确认远程地址是SSH格式的git@github.com:new/test.git,而非HTTPS格式(如果是HTTPS,执行git remote set-url origin git@github.com:new/test.git修改)

4. 清理PuTTY/Pageant的缓存密钥

如果你同时在用PuTTY或Pageant,可能Pageant里还加载着旧账号的PPK密钥:

  • 右键点击任务栏的Pageant图标,选择「View Keys」
  • 找到旧账号的密钥,点击「Remove」
  • 再加载新账号的PPK密钥即可

做完这些步骤后,重新尝试推送应该就能用新账号正常操作了。

内容的提问来源于stack exchange,提问作者John Little

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:37:54