gitgit-commit

How can I change the commit author for a single commit?


I want to change the author of one specific commit in the history. It's not the latest commit.

Related: How do I change the author and committer name/email for multiple commits?


Solution

  • Interactive rebase off of a point earlier in the history than the commit you need to modify (git rebase -i <earliercommit>). In the list of commits being rebased, change the text from pick to edit next to the hash of the one you want to modify. Then when git prompts you to change the commit, use this:

    git commit --amend --author="Author Name <email@address.com>" --no-edit
    

    For example, if your commit history is A-B-C-D-E-F with F as HEAD, and you want to change the author of C and D, then you would...

    1. Specify git rebase -i B (here is an example of what you will see after executing the git rebase -i B command)
      • if you need to edit A, use git rebase -i --root
    2. Change the lines for both C and D from pick to edit
    3. Exit the editor (for vim, this would be pressing Esc and then typing :wq).
    4. Once the rebase started, it would first pause at C
    5. You would git commit --amend --author="Author Name <email@address.com>"
    6. Then git rebase --continue
    7. It would pause again at D
    8. Then you would git commit --amend --author="Author Name <email@address.com>" again
    9. git rebase --continue
    10. The rebase would complete.
    11. Use git push -f to update your origin with the updated commits.