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

更换SSH密钥后Git提交仍显示错误提交者身份是什么原因?

问题根源

你遇到的情况和SSH密钥配置无关,是混淆了两个独立的Git/GitHub机制:

  • SSH密钥仅用于校验你是否有仓库的推送权限,你用zshap对应的密钥推送,权限校验通过所以可以正常推送私有仓库,这部分你的配置完全正常
  • 提交记录的作者信息是本地Git配置的user.name和user.email字段,和SSH授权没有任何关联。GitHub会根据提交信息里的邮箱,匹配平台上绑定了该邮箱的账号显示对应头像和用户名,所以哪怕你用zshap的权限推送,只要提交邮箱绑定的是zackshapiro账号,就会显示该账号为提交作者。

解决步骤

1. 修正当前仓库的提交者配置

进入出问题的仓库目录,执行以下命令查看当前配置:

git config user.name
git config user.email

输出大概率是zackshapiro的账号信息,执行以下命令修改为zshap的对应信息,注意邮箱必须是zshap账号已验证过的邮箱:

git config user.name "zshap"
git config user.email "zshap绑定的GitHub邮箱"

如果需要修改全局默认配置(所有未单独设置的仓库都使用该配置),加上--global参数即可:

git config --global user.name "你的默认用户名"
git config --global user.email "你的默认邮箱"

2. 修正已提交的错误作者信息

如果需要修改最近一次提交的作者,执行:

git commit --amend --author="zshap <zshap的GitHub邮箱>" --no-edit

如果需要批量修改历史多个提交的作者,可以使用git filter-branch或者交互式rebase操作。

3. (可选)按目录自动切换账号配置

如果需要频繁切换两个账号的仓库,可以通过Git的includeIf功能实现按目录自动加载对应账号配置,避免每次手动修改:

  1. 新建两个单独的配置文件:
    • ~/.gitconfig-zshap 内容:
    [user]
        name = zshap
        email = zshap的GitHub邮箱
    
    • ~/.gitconfig-personal 内容:
    [user]
        name = zackshapiro
        email = zackshapiro的GitHub邮箱
    
  2. 在全局~/.gitconfig中添加如下配置,假设你的zshap相关仓库都放在~/work/zshap/目录下,个人账号仓库都放在~/personal/目录下:
    [includeIf "gitdir:~/work/zshap/"]
        path = ~/.gitconfig-zshap
    [includeIf "gitdir:~/personal/"]
        path = ~/.gitconfig-personal
    

配置完成后,进入对应目录下的仓库会自动加载对应账号配置,不会再出现作者串用的问题。


内容的提问来源于stack exchange,提问作者Zack Shapiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:09:03