更换GitHub账号后执行git push仍显示旧账号提交问题如何解决?
问题核心原因
Git的提交作者身份和推送仓库的认证权限是两套独立的配置,你遇到的情况是前者还保留着旧账号的信息:
- 你删除旧凭据、用新账号登录VSCode,只是修改了推送时的权限认证信息,只能保证你有权限把代码推送到新账号的仓库,不会改动本地生成的提交记录里的作者信息
- GitHub匹配提交所属账号的唯一依据是提交记录里绑定的邮箱地址,只要这个邮箱和你的旧账号绑定,哪怕用新账号的权限推送,提交也会被记在旧账号名下。
完整修复步骤
第一步:核对当前Git用户配置
在项目目录下执行以下命令,确认全局和项目级的用户配置:
# 查看全局生效的默认用户配置 git config --global user.name git config --global user.email # 查看当前项目单独配置的用户信息(优先级高于全局) git config user.name git config user.email
如果输出的用户名/邮箱是旧账号的,即可确认问题来源。
第二步:修改用户配置
根据你的需求选择修改范围:
如果要所有本地新项目默认使用新账号信息,修改全局配置:
git config --global user.name "新GitHub账号的用户名" git config --global user.email "新GitHub账号绑定的主邮箱"
如果只想给当前项目用新账号信息,在项目目录下执行以下命令:
git config user.name "新GitHub账号的用户名" git config user.email "新GitHub账号绑定的主邮箱"
第三步:修复已生成的旧作者提交(可选)
如果之前已经用旧作者信息提交了代码,需要修改历史记录的话,可以执行以下命令重写最近N次提交的作者信息(将N替换为你要修改的提交数量,比如最近3次就填3):
git rebase -i HEAD~N -x "git commit --amend --reset-author --no-edit"
修改完成后强制推送到远程仓库即可:
git push --force-with-lease
第四步:排查凭据残留(可选)
如果修改完用户配置后推送还是出现异常,再检查认证配置的残留项:
- 打开「控制面板」→「用户账户」→「凭据管理器」→「Windows凭据」
- 搜索所有前缀为
git:https://github.com的凭据项,全部删除 - 下次执行
git push时会重新弹出认证窗口,输入新账号的凭据即可。
如果你使用SSH协议推送仓库,额外检查用户目录下
.ssh/config文件,确认默认关联的GitHub密钥是新账号配置的密钥即可。
内容的提问来源于stack exchange,提问作者Jason Todd
相关产品推荐
相关产品推荐

