为什么最新提交信息中用户名重复?GitHub将我识别为两个用户
解决GitHub识别为两个独立用户的问题
别担心,刚接触Git/GitHub遇到这种情况太正常了!这基本是因为你本地Git配置的用户名/邮箱和你GitHub账号的身份信息不匹配,导致GitHub把不同配置下的提交识别成了两个用户。下面是一步步解决的方法:
第一步:检查当前Git配置
先确认你本地Git的身份信息,打开终端/命令行,运行:
git config --list
找到user.name和user.email这两行,对比你GitHub账号设置里的用户名和绑定邮箱(GitHub设置入口:头像→Settings→Emails)。如果这两个信息和GitHub上的不一致,那就是问题根源了。
第二步:修正Git配置
方法1:全局配置(所有仓库统一用GitHub身份)
如果你希望所有本地Git仓库都用你的GitHub账号身份提交,运行:
git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub绑定邮箱"
方法2:单个仓库配置(仅当前仓库生效)
如果只想修正这个个人仓库的配置,先进入仓库所在的目录,再运行:
git config user.name "你的GitHub用户名" git config user.email "你的GitHub绑定邮箱"
第三步:(可选)修正历史提交记录(让所有历史都显示同一个用户)
如果想让已经提交的历史记录也统一显示你的GitHub用户名,你可以用下面的脚本改写历史(注意:这会修改仓库的提交历史,个人仓库没问题,但如果是协作仓库请谨慎操作):
- 进入仓库目录,创建一个名为
change-author.sh的文件,内容如下:
#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="你之前错误的邮箱" CORRECT_NAME="你的GitHub用户名" CORRECT_EMAIL="你的GitHub绑定邮箱" 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
- 替换脚本里的
OLD_EMAIL为你之前错误的邮箱,CORRECT_NAME和CORRECT_EMAIL为正确的信息。 - 给脚本添加执行权限(Mac/Linux):
chmod +x change-author.sh
- 运行脚本:
./change-author.sh
- 把修改后的历史推送到GitHub:
git push --force --all
第四步:验证
修改完成后,你可以提交一个测试文件试试:
echo "测试提交" >> test.txt git add test.txt git commit -m "测试:验证用户身份" git push origin main
然后去GitHub仓库的提交记录里查看,应该就只会显示你一个用户的名称了。
内容的提问来源于stack exchange,提问作者cachestache




