Search code examples
gitcommit-message

How do I edit the commit message of any commit in git?


Let's say I have 3 unpushed commits. Now I want to change the commit message of the first or second commit (changing them for the third one is simple using git commit --amend). How to do that?


Solution

  • To rebound on the sub-question: is there a git commit --amend for a previous commit (and not just the last one), you could try something like (not tested yet, but Colin O'Dell mentions in the comments having written a script for it colinodell/git-amend-old):

    git checkout -b tmp
    git reset --hard HEAD~2
    git commit -amend 
    git rebase --onto tmp HEAD@{1} master
    

    That would be like:

    x---x---x---x---x
                    ^
                    |
                   (master*) (* = current branch)
    
    git checkout -b tmp
    x---x---x---x---x
                    ^
                    |
                   (tmp*, master) 
    
    git reset --hard HEAD~2
    x---x---x---x---x
            ^       ^
            |       |
          (tmp*) (master) 
    
    git commit -amend 
          y (tmp*) 
         /
    x---x---x---x---x
            |       ^
       (HEAD@{1})   |
              (master) 
    
    git rebase --onto tmp HEAD@{1} master
        (tmp)
          y---x'---x' (master*) 
         /
    x---x---x---x---x (only referenced in reflog)