更改之前提交的作者信息和邮箱信息需要进行两步操作。首先,使用 git filter-branch 命令进行历史重写,然后使用 git push --force 将更改推送到远程仓库。

步骤 1: 使用 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" 为你的实际信息。

步骤 2: 强制推送更改到远程仓库

git push --force --tags origin 'refs/heads/*'

这将强制推送更改到远程仓库。请注意,强制推送可能会影响其他人正在共同协作的仓库,因此请确保在进行此操作之前与团队成员进行沟通。

注意事项:

  • 在进行历史重写之前,请确保已备份你的仓库,以防发生意外。
  • 历史重写会改变提交的哈希值,因此如果有其他人在你的提交上进行工作,他们可能需要重新基于你的新提交进行工作。
11-10 09:09