Changing Git Commit Email Address

Easy bash script to change the emails used in a git repo

To change the email address for all commits in your Git repository to a new correct one, you can use the git filter-branch command. Here's a step-by-step process:

  1. First, ensure you have the correct email set for future commits:

    git config user.email "[email protected]"
  2. Then, run the following command to rewrite the history:

    git filter-branch --env-filter '
    OLD_EMAIL="[email protected]"
    CORRECT_EMAIL="[email protected]"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags

    Replace [email protected] with the wrong email you used, and [email protected] with your correct email.

  3. After running this command, Git will rewrite your repository's history, changing the email address for all commits.

  4. If you've already pushed your commits to a remote repository, you'll need to force push the changes:

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

Be cautious with this operation, especially if you're working on a shared repository, as it rewrites history. This can cause issues for other contributors if they've based work on the old history.

source: Claude sonnet 3.5 :)

Last updated

Was this helpful?