You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:39:56