How do I remove an unpushed commit in SourceTree?
Asked by Paul Thacker:

Hi, I'm using SourceTree with a Bitbucket repository. I recently made a bunch of experimental changes to my working copy, most of which I never want to check in. I eventually decided that it would be easiest to just reset my working copy to my last commit and start fresh from there--deleting any files I had added and undoing any changes I'd made to files already in the repository. I looked at some questions on-line, and it sounded like I could do this with remove and discard commands. This didn't work like I expected. I ended up with an unpushed commit in Sourcetree that looks like it deletes the files I merely wanted to remove changes from, and indeed, these were missing in my working copy. (I did make a local backup first, just in case.) Eventually, I was able to do a Checkout command on my last pushed commit, and got my working copy back to what I wanted.

So at the moment, my working copy has what I want, and the on-line repository has what I want. But when I open SourceTree, it still shows the unpushed commit, and I'm not sure how to get rid of it. Maybe I could push it and revert it somehow, but I'd prefer to just never push it to the on-line repository. I thought maybe I could use the command "Reset current branch to this commit", but it's not available when I right click on the last commit I pushed. The unpushed commit is marked as "master" and "1 ahead". The last pushed commit is marked as "HEAD" and "origin/master".

In case that description wasn't clear, I'll also include a screenshot of what I'm looking at. Thanks for any help!

SourceTreeScreenshot.png  
[](https://community.atlassian.com/t5/Sourcetree-questions/How-do-I-remove-an-unpushed-commit-in-SourceTree/qaq-p/53058?attachment-id=2683){#link_116a7a369f0479}  
[](/tnckb94959/attachments/tnckb94959/sourcetree-questions/1558/1/SourceTreeScreenshot.png){#display_116a7a369f0479_0}


Answers:
author: Paul Thacker
body: As I said, if I right clicked on the commit I wanted, the option "Reset current branch to this commit" was light grey and could not be selected. But I did finally figure it out. I had a "detached HEAD". I had to first use the command:

git checkout master

Only then could I use the command:

`git reset --hard 564a24f`

to get rid of the unpushed commit.

I wasn't familiar with the concept of a "detached HEAD", which made it difficult to search for a solution. But after some very circuitous searching, I found this page useful:

http://stackoverflow.com/questions/10228760/fix-a-git-detached-head

comments: author: mambo05
body: Thanks! It saves my day!


author: shalon_teoh
body: Thanks you!!


author: itzrahulsoni
body: I have written a detailed article with screenshots. Sharing in hope that it would help: <https://www.attosol.com/undo-in-git-using-sourcetree/>


author: Johannes Kilian
body: It isn't possible in SourceTree via GUI-Elements.

You have to open a Terminal in SourceTree and do this via commandline as described above.

*** ** * ** ***

According to [Izhar Aazmi](https://answers.atlassian.com/questions/users?username=izhar.aazmi)'s comment it II possible - You never stop learning .... :wink:

comments: author: izharaazmi
body: Nope, this is not correct. It is totally possible using GUI. See <https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree>