Edit a commit message in SourceTree Windows (already pushed to remote)

Community picture Community · Jul 11, 2013 · Viewed 166.2k times · Source

How do I edit an incorrect commit message in SourceTree without touching the command line?

Additional details:

  • This is not the latest commit.
  • Everything was already pushed to Bitbucket.
  • This is a private repository and I am the only collaborator.
  • I don't mind losing any of the previous commits, as I can re-commit them anytime.
  • I don't want however to lose any code modification ever made.

Outcome:

  • As it seems impossible at the moment according to your comments and replies, I'm going to create a new repository and start all over. Thanks all for your help!

Answer

user456814 picture user456814 · Apr 23, 2014

Here are the steps to edit the commit message of a previous commit (which is not the most recent commit) using SourceTree for Windows version 1.5.2.0:

Step 1

Select the commit immediately before the commit that you want to edit. For example, if I want to edit the commit with message "FOOBAR!" then I need to select the commit that comes right before it:

Selecting commit before the one that I want to edit.

Step 2

Right-click on the selected commit and click Rebase children...interactively:

Selecting "Rebase children interactively".

Step 3

Select the commit that you want to edit, then click Edit Message at the bottom. In this case, I'm selecting the commit with the message "FOOBAR!":

Select the commit that you want to edit.

Step 4

Edit the commit message, and then click OK. In my example, I've added "SHAZBOT! SKADOOSH!"

Edit the commit message

Step 5

When you return to interactive rebase window, click on OK to finish the rebase:

Click OK to finish.

Step 6

At this point, you'll need to force-push your new changes since you've rebased commits that you've already pushed. However, the current 1.5.2.0 version of SourceTree for Windows does not allow you to force-push through the GUI, so you'll need to use Git from the command line anyways in order to do that.

Click Terminal from the GUI to open up a terminal.

Click Terminal

Step 7

From the terminal force-push with the following command,

git push origin <branch> -f

where <branch> is the name of the branch that you want to push, and -f means to force the push. The force push will overwrite your commits on your remote repo, but that's OK in your case since you said that you're not sharing your repo with other people.

That's it! You're done!