Change a Commit's Author on Git
Tags: git
Published: 2023-02-02 08:00:00

---
series: Git Weekly
---

I usually commit to my work and to my private git projects, and I use two different email addresses for them. But it happens sometimes that I mess up the emails and commit to the work project with my private email address or vice versa.

So, it comes in handy if one can change the last commit’s author, although my use case is not the only case changing the commit’s author can be useful.


## Change the Last Commit’s Author

It would be a lot easier if you want to change only the last commit’s author. It’s usually easier if you want to change the last commit’s anything, generally. This can be achieved with the good old amendment:

```shell
git commit --amend --author="Mohammad-Ali A'RÂBI <mohammad-ali@aerabi.com>"
```

After this command is executed, an editor opens up so you’ll have a chance to change the commit message as well.

Be careful not to have any changes staged before doing the amendment, otherwise, those changes will be added to the commit as well.

Also, beware that you have to push with [force with lease](https://medium.com/itnext/git-force-vs-force-with-lease-9d0e753e8c41) now, as you have done some housekeeping in the history:

```shell
git push --force-with-lease
```

## Change the Author in an Older Commit

Now, let’s assume we want to change the author of the commit which is 2 commits behind (so, the 3rd commit, counting from the last). To find the commit we want to edit, let’s do a oneliner git log:

```shell
git log --oneline
```

The output looks like this:

```
dd16fac (HEAD -> master) Add GitHub page 
b8473cf Update README
deba6a0 Add REAME
```

Here, `Add GitHub page` is the last commit, and we want to edit `Add README`. To do so, we use the interactive rebasing:

```shell
git rebase -i HEAD~3
```

The `HEAD~3` indicates how far we want to look back and change history. In this case, it’s 3 commits. By running this command, an editor opens up with the following content:

```
pick deba6a0 Add README 
pick b8473cf Update README
pick dd16fac Add GitHub page
```

Note that the order is different from the order in the git log. The commit you want to change is now represented in the first line. To change its author, you want to change the verb in front of it, from `pick` into `edit`.

```
edit deba6a0 Add README 
pick b8473cf Update README
pick dd16fac Add GitHub page
```

Then save the file and exit. You will return to the command line and have the chance to amend the commit you chose:

```shell
git commit --amend --author="Mohammad-Ali A'RÂBI <mohammad-ali@aerabi.com>"
```

This is the same as before. Now let the interactive rebaser know that you’re done here and want to continue:

```shell
git rebase --continue
```

As you have just changed the author, there will be no conflicts and your rebase will finish successfully. Now, as before, you have to push with force with lease.

## Conclusion

This tutorial was focused on changing an author’s email address, but one can use the same instructions to change the author’s name or perform any kind of amendment.

Today’s main takeaway is the following:

> Check your email address before committing. It’s a lot easier.

You can also add CI jobs that check the author’s names and email addresses: It’s better to fix the commit’s authors before they are merged into master. Generally, the sooner you fix stuff, the easier it is to fix them.