如何为多个提交更改作者和提交者名称/电子邮件?

发布时间 2023-10-30 23:18:28作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=如何为多个提交更改作者和提交者名称/电子邮件?

如何更改一系列提交的作者?


如何更改一系列提交的作者?

要更改一系列提交的作者,需要重写所有历史记录。如果您不介意这一点并认为值得这样做,那么您应该查看 git filter-branch。手册页面包括几个示例以供入门。还要注意,您可以使用环境变量来更改作者、提交者、日期等的名称 -- 请参阅 git manual page 中的“环境变量”部分。

具体而言,您可以使用以下命令修复所有错误的作者名称和电子邮件(来源:GitHub 帮助):

#!/bin/sh

git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.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

要使用备选历史记录过滤工具 git filter-repo,您需要首先安装它并按照 gitmailmap 的格式构建一个 git-mailmap

Proper Name <proper@email.xx> Commit Name <commit@email.xx>

然后使用创建的 mailmap 运行 filter-repo:

git filter-repo --mailmap git-mailmap