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

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!

  • 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:

    在我想编辑的那个之前选择提交。

    Step 2

    Right-click on the selected commit and click 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!":

    选择您想要编辑的提交。

    Step 4

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

    编辑提交消息

    Step 5

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

    点击确定完成。

    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.

    点击终端

    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!


    On Version 1.9.6.1. For UnPushed commit.

  • Click on previously committed description
  • Click Commit icon
  • Enter new commit message, and choose " Ammend latest commit " from the Commit options dropdown.
  • Commit your message.

  • Update

    Note: this answer was originally written with regard to older versions of SourceTree for Windows, and is now out-of-date.

    See my new answer for the current version of SourceTree for Windows, 1.5.2.0 . I'm leaving this answer behind for historical purposes.

    Original Answer

    as I'm on Windows I don't have a command line tool nor do I know how to use one :( Is it the only way to get that sorted out? The GUI doesn't cover all the git's functions? — Original Poster

    Regarding Git GUIs, no, they don't cover all of Git's functions . They don't even come close . I suggest you check out one of the answers in How do I edit an incorrect commit message in Git?, Git is flexible enough that there are multiple solutions...from the command line.

    SourceTree might actually come with the msysgit bash shell already, or it might be able to use the standard Windows command shell. Either way, you open it up form SourceTree by clicking the Terminal button:

    You set which terminal SourceTree uses (bash or Windows) here:

    在这里输入图像描述

    One way to solve the problem in SourceTree

    That being said, here's one way you can do it in SourceTree. Since you mentioned in the comments that you don't mind "reverting back to the faulty commit" (by which I assume you actually mean resetting, which is a different operation in Git), then here are the steps:

  • Do a hard reset in SourceTree to the bad commit by right-clicking on it and selecting Reset current branch to this commit , and selecting the hard reset option from the drop down. 在这里输入图像描述
  • Click the Commit button, then
  • Click on the checkbox at the bottom that says "Amend latest commit". 在这里输入图像描述
  • Make the changes you want to the message, then click Commit again. Voila!
  • Regarding this comment:

    if it's not possible because it's already pushed to Bitbucket, I would not mind creating a new repository and starting over.

    Does this mean that you're the only person working on the repo? This is important because it's not trivial to change the history of a repo (like by amending a commit) without causing problems for your collaborators. However, assuming that you're the only person working on the repo, then the next thing you would want to do is force push your changed history to the remote.

    Be aware, though, that because you did a hard reset to the faulty commit, then force pushing causes you to lose all work that come after it previously. If that's okay, then you might need to use the following command at the command line to do the force push, because I couldn't find an option to do it in SourceTree:

    git push remote-repo head -f
    

    This also assumes that BitBucket will allow you to force push to a repo.

    You should really learn how to use Git from the command line anyways though, it'll make you more proficient in Git. #ProTip, use msysgit and turn on Quick Edit mode on in the terminal properties, so that you can double click to highlight a line of text, right click to copy, and right click again to paste. It's pretty quick.

    链接地址: http://www.djcxy.com/p/144.html

    上一篇: 使用Git将特定文件重置或恢复到特定修订版本?

    下一篇: 在SourceTree Windows中编辑提交消息(已推送到远程)