如何修改GitHub提交记录显示的用户名?git配置后仍显旧名怎么办
解决GitHub提交记录显示用户名不符的操作步骤
1. 排查仓库本地配置是否覆盖全局配置
Git的仓库本地配置优先级高于全局配置,若当前仓库单独设置过用户名和邮箱,会覆盖你修改的全局配置。
在仓库根目录打开终端执行命令查看本地配置:git config --local --list
若返回结果中存在user.name和user.email字段且值和你设置的全局值不符,可选择以下两种方案之一处理:
- 直接修改本地仓库配置:
git config --local user.name "DK-shanto" git config --local user.email "shanto**@gmail.com"
- 删除本地配置,统一走全局配置:
git config --local --unset user.name git config --local --unset user.email
VS Code的Git插件默认读取系统Git的配置,Git配置修改完成后无需额外调整VS Code设置。
2. 确认提交邮箱和GitHub账号的绑定关系
GitHub会根据提交信息中携带的邮箱,匹配对应的账号显示用户名,需要确认你配置的shanto**@gmail.com已添加到你的GitHub账号绑定邮箱列表中:
登录GitHub后进入个人设置→邮箱页面,查看已绑定邮箱,若缺少该邮箱先完成添加验证。
如果你的GitHub开启了「隐藏个人邮箱」功能,需要将Git配置的邮箱替换为GitHub提供的noreply格式邮箱,否则会匹配失败
3. 修改已推送的历史提交用户名
你修改配置前生成的提交,已经内置了当时的用户名和邮箱信息,修改配置不会自动更新旧提交的信息,需要手动修改历史提交:
- 若仅需要修改最近1次还未推送的提交,执行:
git commit --amend --author="DK-shanto <shanto**@gmail.com>" --no-edit
修改完成后强制推送到远程即可:git push --force - 若需要修改批量历史提交,执行以下脚本(替换脚本中的旧邮箱为你之前使用的邮箱地址):
git filter-branch --env-filter ' OLD_EMAIL="你之前提交用的旧邮箱" CORRECT_NAME="DK-shanto" CORRECT_EMAIL="shanto**@gmail.com" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
脚本执行完成后强制推送所有分支和标签到远程:git push --force --tags origin 'refs/heads/*'
注意:修改历史提交会变更所有对应提交的哈希值,若该仓库是多人协作仓库,需提前告知所有协作者同步最新远程分支,避免提交冲突
4. 验证配置生效
配置修改完成后做一次测试提交,推送到GitHub后查看提交记录显示的用户名是否正确即可。
内容的提问来源于stack exchange,提问作者Shanto Kundu
相关产品推荐
相关产品推荐

