35.1 更改提交的作者

你可以使用环境过滤器来更改提交的作者。只需在脚本中修改并导出 $GIT_AUTHOR_NAME,即可更改提交的作者。 创建一个名为 filter.sh 的文件,内容如下:

if [ "$GIT_AUTHOR_NAME" = "Author to Change From" ]; then
    export GIT_AUTHOR_NAME="Author to Change To"
    export GIT_AUTHOR_EMAIL="email.to.change.to@example.com"
fi

然后从命令行运行 filter-branch:

chmod +x ./filter.sh
git filter-branch --env-filter ./filter.sh

35.2 将 git committer 设置为与 commit author 相同

此命令会重写历史,使得在提交范围 commit1..commit2 内,git commit 的作者也同时成为提交者:

git filter-branch -f --commit-filter \
'export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME";
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL";
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE";
git commit-tree $@' \
-- commit1..commit2

说明

  • 环境过滤器:--env-filter 用于修改提交的作者信息。通过在脚本中设置 GIT_AUTHOR_NAME 和 GIT_AUTHOR_EMAIL,可以更改提交的作者。
  • 提交过滤器:--commit-filter 用于修改提交的提交者信息。通过在脚本中设置 GIT_COMMITTER_NAME、GIT_COMMITTER_EMAIL 和 GIT_COMMITTER_DATE,可以将提交者信息设置为与作者相同。

注意:重写历史可能会导致问题,特别是当其他人也在协作时。在执行这些操作之前,请确保备份你的仓库,并通知团队成员。