如何解决Visual Studio提交代码时GitHub用户名无法正确关联的问题
问题成因
GitHub识别提交者身份的核心依据是提交记录中携带的提交人邮箱,与你是否在Visual Studio中登录GitHub扩展没有直接关联:GitHub会将提交记录里的邮箱和账号下已验证的邮箱列表做匹配,匹配成功才会关联你的账号、显示头像并支持跳转。你遇到的问题绝大多数是本地Git配置的提交人邮箱和GitHub账号绑定的邮箱不匹配导致的。
修复步骤
第一步:确认当前提交使用的身份信息
打开你本地仓库对应的终端,执行以下命令查看最近一次提交的提交人信息:
git log --pretty=format:"%an <%ae>" -1
执行后输出的<>包裹的内容就是你提交用的邮箱,先确认该邮箱是否是你GitHub账号下已验证的邮箱。
第二步:修正本地Git配置
根据你的需求选择全局生效或者仅当前仓库生效的配置:
- 全局配置(所有本地仓库都生效):
git config --global user.name "你的GitHub官方用户名" git config --global user.email "你GitHub账号绑定并验证通过的邮箱" - 仅当前仓库生效:
git config user.name "你的GitHub官方用户名" git config user.email "你GitHub账号绑定并验证通过的邮箱"
如果你开启了GitHub的「隐藏个人邮箱」功能,需要填写GitHub为你生成的专属noreply邮箱,格式为你的用户ID+你的用户名@users.noreply.github.com,该邮箱可以在GitHub的「设置-邮箱」页面查到。
第三步:修正已提交的历史提交信息(可选)
如果需要修复已经推送到GitHub的旧提交的关联信息,可以按以下操作处理:
- 如果你只需要修正最近N次提交,将下方命令的
3替换为你要修正的提交次数:git rebase -i HEAD~3 - 在弹出的编辑界面中,将所有需要修改的提交前的
pick改为edit,保存退出 - 每触发一次rebase暂停,就执行以下命令修正提交人信息:
git commit --amend --author="你的GitHub用户名 <你的绑定邮箱>" --no-edit git rebase --continue - 所有修改完成后,强制推送更新到远程仓库:
git push --force-with-lease
第四步:确认GitHub邮箱配置
登录GitHub账号,进入「设置-邮箱」页面,确认你提交用的邮箱已经在邮箱列表中,且状态为已验证。如果使用noreply邮箱,需要同时开启「Keep my email addresses private」选项。
内容的提问来源于stack exchange,提问作者user3700562
相关产品推荐
相关产品推荐

