Git中作者名出现UTF-8编码异常的原因及修复方法
修复Git提交作者名的UTF-8编码显示问题
问题说明
你遇到的是Git对非ASCII字符自动应用的RFC2047编码格式,这种编码会在导出.patch文件时显现,但可以通过调整Git配置和修改历史提交来解决,让作者名直接以UTF-8明文显示。
解决步骤
1. 配置Git默认使用UTF-8明文
执行以下全局配置命令,让Git处理提交信息、作者信息时直接使用UTF-8,不进行编码转换:
git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8
同时设置系统环境变量(Linux/macOS可添加到~/.bashrc或~/.zshrc;Windows需在系统环境变量中配置):
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
2. 修复已存在的异常提交
如果历史提交中已经出现编码问题,可按需求选择以下方式修改:
- 修改单个提交:使用交互式变基定位到目标提交
git rebase -i HEAD~n # 将n替换为需要回溯的提交数量,比如最近3个提交写3
在打开的编辑器中,把要修改的提交前的pick改为edit,保存退出后执行:
git commit --amend --author="João <joop011122@gmail.com>" --no-edit git rebase --continue
重复上述操作直到所有目标提交修改完成。
- 批量修改所有历史提交:创建并执行脚本
新建脚本文件fix-author.sh:
#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="需要替换的旧邮箱地址" CORRECT_NAME="João" CORRECT_EMAIL="joop011122@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
给脚本添加执行权限并运行:
chmod +x fix-author.sh ./fix-author.sh
注意:修改历史提交后需强制推送到远程仓库(git push --force),提前告知团队成员避免冲突。
3. 验证修复效果
修改完成后导出.patch文件,作者信息应显示为:
From: João joop011122@gmail.com
内容的提问来源于stack exchange,提问作者user27052453
相关产品推荐
相关产品推荐

