Reverting push to remote with sourcetree

I accidently pushed a feature branch to the remote master. Now I want to revert the master to the previous commit. When I select ‘Revert current branch to this commit’ only the local branch is reverted, and because the remote master is 55 ahead (accidental push) I cannot push the just reverted local master to the remote.

When looking into this issue on SO and Google, I found that many people use force push using the command line. But since I’m using Source Tree I’d like to come up with a way that actually uses Source Tree.

  • Bitbucket: Adding a local built project to bitbucket using a Mac OSX
  • “Updates were rejected because the tag already exists” when attempting to push in SourceTree
  • git - apply a commit on another branch to the working copy
  • How can I pull all branches in SourceTree?
  • 'git apply' failed with code 1: patch does not apply error in SourceTree on Stage Hunk
  • SourceTree - git: fatal: remote error: Repository not found
  • I also found the rebase option, but I can’t seem to find a step-by-step tutorial..

    Any ideas?

  • Understanding .git/config's 'remote' and 'branch' sections
  • Squashing a sequence of small merges from master into my branch with git while keeping reference to master?
  • How to execute a command right after a fetch or pull command in git?
  • Error: The source control operation failed because the revisions
  • Is there a difference between “git reset --hard hash” and “git checkout hash”?
  • git-svn clone fails unexpectedly
  • 2 Solutions collect form web for “Reverting push to remote with sourcetree”

    When you push a commit, the safest way to revert it (rather than forcing the push with -f) is to use the revert function, so a new commit is created on top of your previous commit.

    This is possible to do using Sourcetree, right clicking in the commit that you want to revert, and selecting “Reverse commit…”.

    enter image description here

    You would need to do this for each commit you want to revert, in reverse order.

    Sourcetree doesn’t expose the -f flag to you: https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree

    So, the only way to bring the remote back to it’s original state is to git revert each commit you introduced in the reverse order.

    Assuming the remote was on commit A and you pushed your feature branch holding commits B, C and D, you have to

    git revert D
    git revert C
    git revert B
    git push
    

    The push will work fine since you’re not modifying the pushed history but instead push a new set of changes.

    If you want to shorten your series of reverts to one commit, you could do a

    git rebase -i origin/master
    

    and select each of your revert commits to be squashed. Then, your push will only contain one commit that reverts D, C and B in one go.

    Git Baby is a git and github fan, let's start git clone.