How to Change Author of Commit in Git History


Sometimes, I push to a Git repository from different machines, and I find that my username and email are different on each machine. This creates an inconsistency in the Git history.

How could we change the author of a single commit in Git?

Let’s figure this out.

I’m going to assume we start on the master branch for this walkthrough.

1. Checkout the commit

First, let’s find the commit we want to replace in the logs.

git log --abbrev-commit
commit b123892 (HEAD -> master, origin/master, origin/HEAD)
Author: thewrongname <someone@else.com>
Date:   Thu Aug 27 10:10:33 2020 -0500

    Commit from another computer!

commit a928338
Author: dev.logfetch <dev.logfetch@gmail.com>
Date:   Thu Aug 27 00:28:07 2020 -0500

    Commit from my personal computer!

...

Suppose we want to change the author of the first commit b123892 (second commit author is what we want).

We start by checking out this commit.

git checkout b123892

2. Change the author

# git commit --amend --author "new_name <new_email>"
git commit --amend --author "logfetch <dev.logfetch@gmail.com>"

After running this, we’ve checked out to a new branch.

3. Checkout the branch from Step 1

# git checkout branch_name
git checkout master
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
    c894824 Commit from another computer!

This commit c894824 is our new commit hash.

4. Replace the old commit with the new one

# git replace old_hash new_hash
git replace b123892 c894824

5. Rewrite future commits based on this new replacement

git filter-branch -- --all

6. Remove the replacement

# git replace -d old_hash
git replace -d b123892

7. Confirm locally that your logs look correct

git log

8. Push to branch

git push --force