1 总体思路
- 更改之前提交的作者信息和邮箱信息需要进行两步操作。
首先,使用
git filter-branch
命令进行历史重写
然后,使用git push --force
将更改推送到远程仓库。
Step1 使用 git filter-branch 进行历史重写
在终端或命令行中执行以下命令:
git filter-branch --env-filter '
OLD_EMAIL="旧的邮箱@example.com"
CORRECT_NAME="新的作者信息"
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
请替换 "旧的邮箱@example.com"、"新的作者信息" 和 "新的邮箱@example.com" 为你的实际信息。
Step2 强制推送更改到远程仓库
git push --force --tags origin 'refs/heads/*'
这将强制推送更改到远程仓库。请注意,强制推送可能会影响其他人正在共同协作的仓库,因此请确保在进行此操作之前与团队成员进行沟通。
Y 注意事项
- 在进行历史重写之前,请确保已备份你的仓库,以防发生意外。
- 历史重写会改变提交的哈希值,因此如果有其他人在你的提交上进行工作,他们可能需要重新基于你的新提交进行工作。