How do I remove an unpushed commit in SourceTree?

Paul Thacker March 19, 2015

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

3 answers

17 votes
Paul Thacker March 19, 2015

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

mambo05 March 7, 2017

Thanks! It saves my day!

shalon_teoh October 23, 2018

Thanks you!!

Like José Sá likes this
7 votes
itzrahulsoni January 21, 2018

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

0 votes
Johannes Kilian
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
March 19, 2015

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's comment it II possible - You never stop learning .... wink

izharaazmi March 19, 2015

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

Like # people like this

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events