通过电子邮件替换提交历史

Replace commit history by email

我在提交我的存储库时使用了错误的电子邮件地址。

我发现 [此脚本][1] 让我可以替换错误的提交。它确实有效,但最初的错误提交仍然存在。

所以现在 repo 有 15 个错误提交 + 15 个正确提交,而不是 15 个错误提交。

您将需要使用 filter-branch

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
        then
                GIT_COMMITTER_NAME="<New Name>";
                GIT_AUTHOR_NAME="<New Name>";
                GIT_COMMITTER_EMAIL="<New Email>";
                GIT_AUTHOR_EMAIL="<New Email>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD `

如果您是 ONLY 提交此存储库的用户,您可以简单地更新所有引用而不检查旧内容

git filter-branch -f --env-filter '
    GIT_AUTHOR_NAME="Newname"
    GIT_AUTHOR_EMAIL="newemail"
    GIT_COMMITTER_NAME="Newname"
    GIT_COMMITTER_EMAIL="newemail"
  ' HEAD