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. Find the commit we want to replace in the logs
git log --abbrev-commit
commit b123892 (HEAD -> master, origin/master, origin/HEAD) Author: thewrongname <firstname.lastname@example.org> Date: Thu Aug 27 10:10:33 2020 -0500 Commit from another computer! commit a928338 Author: simplernerd <email@example.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).
2. Change the author
# git commit --amend --author "new_name <new_email>" git commit --amend --author "simplernerd <firstname.lastname@example.org>"
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!
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
8. Push to branch
git push --force