使用git filter-repo修改提交作者信息遇日期解析错误求助
Git Filter-Repo 修改错误作者信息的解决办法
问题根源
你错误地将邮箱也填入了作者姓名字段,Git解析提交身份信息时,会按照「姓名 <邮箱> 日期」的格式拆分内容。现在你的姓名里包含了邮箱和空格,导致Git把姓名中的「User.Name@email.com」误判为日期字段的一部分,进而触发日期解析错误。
方法一:用.mailmap批量修正(推荐)
这是最简洁的批量修正方式,适合所有包含错误作者信息的提交:
- 新建一个
.mailmap文件,写入以下内容:
格式说明:User Name <User.Name@email.com> User Name User.Name@email.com <User.Name@email.com>正确姓名 <正确邮箱> 错误姓名 <错误邮箱>,用于映射错误信息到正确值。 - 执行filter-repo命令应用修正:
git filter-repo --mailmap .mailmap
方法二:用自定义脚本精准修改
如果只需要修改特定某次提交,或者需要更灵活的控制,可以用Python脚本过滤:
- 新建
fix_author.py脚本,内容如下:def fix_commit(commit): # 修正作者信息 if commit.author_name == "User Name User.Name@email.com": commit.author_name = "User Name" commit.author_email = "User.Name@email.com" # 若提交者信息也有误,同步修正 if commit.committer_name == "User Name User.Name@email.com": commit.committer_name = "User Name" commit.committer_email = "User.Name@email.com" return commit - 执行命令应用脚本:
git filter-repo --commit-callback fix_author.py
重要提醒
- 执行
git filter-repo前必须备份仓库(复制整个仓库文件夹即可),因为该命令会重写整个提交历史。 - 如果仓库已推送到远程,修改后需要强制推送:
git push --force,记得通知协作的同事同步更新本地仓库。
内容的提问来源于stack exchange,提问作者Tiago Feitor
相关产品推荐
相关产品推荐

