Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the commit author for one specific commit?

Tags:

git

git-commit

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

I know about this question - How do I change the author of a commit in git?

But I am thinking about something, where I identify the commit by hash or short-hash.

like image 509
MicTech Avatar asked Jun 15 '10 04:06

MicTech


People also ask

How do I make changes to a specific commit?

Find the commit you want, change pick to e ( edit ), and save and close the file. Git will rewind to that commit, allowing you to either: use git commit --amend to make changes, or.

How do I change the author of a multiple commit in git?

Update the author details of historical commitsCheck through the commits in the list, and hit ctrl+x , followed by enter to apply the changes.

Does git commit amend change author?

Using --amend for the Very Last CommitThis effectively replaces the last commit with your "edited" version, correcting the wrong author information.

Can a commit have multiple authors?

You can attribute a commit to more than one author by adding one or more Co-authored-by trailers to the commit's message. Co-authored commits are visible on GitHub.


1 Answers

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 protected]>" --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 protected]>"
  6. Then git rebase --continue
  7. It would pause again at D
  8. Then you would git commit --amend --author="Author Name <[email protected]>" again
  9. git rebase --continue
  10. The rebase would complete.
  11. Use git push -f to update your origin with the updated commits.
like image 124
Amber Avatar answered Oct 03 '22 05:10

Amber