Thursday, November 18, 2021

[SOLVED] Replace commit history by email

Issue

I've been using the wrong email while making commits to my repo.

I found [this script][1] that let me replace the faulty commits. It did work, but the original faulty commits are still there.

So now instead of 15 faulty commits, the repo has 15 faulty + 15 correct commits.


Solution

You will need to use 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 `

If you are the ONLY user who committed to this repository you can simply update all references without checking the old content

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


Answered By - CodeWizard