You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为什么最新提交信息中用户名重复?GitHub将我识别为两个用户

解决GitHub识别为两个独立用户的问题

别担心,刚接触Git/GitHub遇到这种情况太正常了!这基本是因为你本地Git配置的用户名/邮箱和你GitHub账号的身份信息不匹配,导致GitHub把不同配置下的提交识别成了两个用户。下面是一步步解决的方法:

第一步:检查当前Git配置

先确认你本地Git的身份信息,打开终端/命令行,运行:

git config --list

找到user.nameuser.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用户名,你可以用下面的脚本改写历史(注意:这会修改仓库的提交历史,个人仓库没问题,但如果是协作仓库请谨慎操作):

  1. 进入仓库目录,创建一个名为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
  1. 替换脚本里的OLD_EMAIL为你之前错误的邮箱,CORRECT_NAMECORRECT_EMAIL为正确的信息。
  2. 给脚本添加执行权限(Mac/Linux):
chmod +x change-author.sh
  1. 运行脚本:
./change-author.sh
  1. 把修改后的历史推送到GitHub:
git push --force --all

第四步:验证

修改完成后,你可以提交一个测试文件试试:

echo "测试提交" >> test.txt
git add test.txt
git commit -m "测试:验证用户身份"
git push origin main

然后去GitHub仓库的提交记录里查看,应该就只会显示你一个用户的名称了。

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

火山引擎 最新活动