Software Development

Changing commit message in Git

Introduction

Git is distributed version control system and now-a-days, it is de facto version control system for number of open source and closed source software projects, including Eclipse. Git is amazing tool to use and has lot of flexibility.

Talking about flexibility, i was amazed by an interesting feature of git, that it allows you to edit and change previous commit messages.

There are basically two ways do it such as-

  1. Using amend switch
  2. Using rebase

Lets have a look at each of these.

Using amend switch

This is simple way to change commit message for your most recent commit. In this we make use of git commit with amend switch. Usage is shown as follows,

git commit –amend -m “new message”

Note: i am using some of git aliases, such git ol displays the git commit log in proper format , you can browse for some aliases in my .gitconfig in my github repo

Consider the following commits in my repo.

png;base644839458eb1e4ec7c

It is same same commiting but with added amend switch, following shows actual usage:

png;base64d54e553bed62a293

This is quick and nice way for editing your most recent commit message.

Using rebase

Whenever you want to change the multiple or more than one commit messages or one other than recent commit then this is a nice way of doing it. Although rebase is very powerful that can do lot of things. But for this article let’s focus on only editing the commit message.

We use following command for our purpose,

git rebase -i <sha1 of previous commit msg> or <relative-HEAD-pointer>

Consider git repo with few commits shown as follows

png;base6438d9d1f1fd759a9d

Above commit logs are shown in descending order in date-time order when it was committed, hence latest commit is top and least recent is below that and so on.

Suppose, you want to change the 2nd commit message (from bottom) then do it as follows-

As you want to change 2nd (156ce8e) commit log  then we specify SHA1 of one prior to that , in our case 1st (6343229) commit log, for rebase command.

png;base64d1d4ca633f33f58d

Following is command for doing it – Note, SHA1 hash

png;base64f72c4eb95f69bbb8

After you hit enter, you will see following rebase file for editing-

png;base64aa073d994a8c0fbf

In above, focus on top of file which is important to us. It shows commits with some commands /markers at start.

Those are rebase command/markers for several purpose, but for our case we use ‘reword’ which solves our purpose.

Go ahead and change marker of first line (which is our 2nd commit), ‘pick’ to either ‘r’ or ‘reword’ and retain others as it as shown in following

png;base6412b31105924bf0e2

png;base64ac58386caae13d45

After this exit file editing by pressing Ctrl+X, (some other way depend on editor ) then immediately after you will see commit dialog box for new commit message. Enter new commit message and then exit.

png;base64999bd49b0709e191

then we are done. after that you should see following

png;base64f2651dd74a8171e8

Check commit logs for new commit message

png;base64a4cdf1893a49fcf4

Above steps are for changing only one commit message but for editing, changing multiple, you can change marker of the other commits to ‘reword’ as per requirement and accordingly after that git will ask for entering new commit message box for each marked commit message and you are done

png;base64a4cdf1893a49fcf4

Thats all folks for this article.
 

Reference: Changing commit message in Git from our JCG partner Abhijeet Sutar at the ajduke’s blog blog.

Abhijeet Sutar

Abhijeet (ajduke) is self-taught, self-organized software developer. His current go to language is Java and also he is exploring other languages such as Scala, Ruby.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button