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:
Outcome:
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.
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:
Reset current branch to this commit
, and selecting the hard reset option from the drop down. 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