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,可以将提交者信息设置为与作者相同。
注意:重写历史可能会导致问题,特别是当其他人也在协作时。在执行这些操作之前,请确保备份你的仓库,并通知团队成员。