[GIT] 修改之前的commit提交的作者信息和邮箱信息 [转]

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 注意事项

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

X 参考文献

posted @ 2024-02-23 12:34  千千寰宇  阅读(42)  评论(0编辑  收藏  举报