Sourcetree - undo unpushed commits

atlassian-sourcetree, version-control

Solution

- Right click on the commit you like to reset to (not the one you like to delete!)

- Select "Reset master to this commit"

- Select "Soft" reset.

A soft reset will keep your local changes.

Source: https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

Edit

About `git revert`: This command creates a new commit which will undo other commits. E.g. if you have a commit which adds a new file, `git revert` could be used to make a commit which will delete the new file.

About applying a soft reset: Assume you have the commits `A` to `E` (`A---B---C---D---E`) and you like to delete the last commit (`E`). Then you can do a soft reset to commit `D`. With a soft reset commit `E` will be deleted from git but the local changes will be kept. There are more examples in the git reset documentation.

Problem

I am using Sourcetree for Windows for a git-repository and would like to undo an unpushed commit. Is that possible? If I do "revert commit", it creates a second commit which reverts the first commit, but I don't want the first commit to appear at all in my source control. I could also delete my local repository and pull it again without my local commit, but maybe there's another way?

Original source