Git提交显示系统名称而非用户名,配置全局凭据后仍异常
解决Git提交记录显示系统名称的问题
1. 检查并修正Git配置
全局配置可能被当前仓库的局部配置覆盖,先确认当前仓库的实际生效配置:
- 查看当前仓库的用户名:
git config user.name - 查看当前仓库的邮箱:
git config user.email
如果输出是系统名称MySystemName和<XXXX>,说明局部配置优先级高于全局,可执行以下命令修改局部配置:
git config user.name "myusername" git config user.email "myemail@gmail.com"
若不需要单独的局部配置,也可以直接删除局部配置项,让全局配置生效:
git config --unset user.name git config --unset user.email
完成后,新的提交将使用正确的用户名和邮箱信息。
2. 修改已存在的历史提交记录
已推送到远程的历史提交不会自动更新,需批量替换旧的作者信息:
- 执行以下命令(将命令中的旧名称、旧邮箱替换为你实际的系统名称和占位邮箱):
git filter-branch --env-filter ' OLD_NAME="MySystemName" OLD_EMAIL="XXXX" NEW_NAME="myusername" NEW_EMAIL="myemail@gmail.com" if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ] && [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$NEW_NAME" export GIT_COMMITTER_EMAIL="$NEW_EMAIL" fi if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ] && [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$NEW_NAME" export GIT_AUTHOR_EMAIL="$NEW_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
- 修改完成后,强制推送到远程仓库(注意:如果是多人协作仓库,强制推送会覆盖远程历史,需提前和团队沟通;个人仓库可直接执行):
git push --force --tags origin 'refs/heads/*'
验证结果
执行git log -n 1查看最新提交记录,确认作者信息已更新为你的用户名和邮箱。
内容的提问来源于stack exchange,提问作者Ashish Choudary
相关产品推荐
相关产品推荐

