Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 635
Mot Avatar asked Oct 15 '10 07:10

Mot


2 Answers

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)
like image 56
VonC Avatar answered Oct 23 '22 10:10

VonC


This is a job for the powerful git rebase -i command. Also, see the Interactive Rebasing section of the Git book.

like image 25
Greg Hewgill Avatar answered Oct 23 '22 10:10

Greg Hewgill