I have merged a dev branch (with constant, sometimes unstable changes) to our master branch (where we store the released, stable code). I want to restore the master branch to the state it was before like the merge with the dev branch had never happened (and that when in the future we merge the dev branch all changes that we will discard now will be merged "again").

This is the current status of the master branch and I want it to have the 'professional-1.1.2' commit/tag at the HEAD.

![status of the master branch](https://i.stack.imgur.com/Q7Mi2.png)

I tried:

```
$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.

```

After a bit of research I think that the better option is do a `git reset --hard professional-1.1.2` and `git push --force` as the answer to [Git: How to ignore fast forward and revert origin [branch] to earlier commit?](https://stackoverflow.com/questions/3166713/git-how-to-ignore-fast-forward-and-revert-origin-branch-to-earlier-commit) or [reverting push'd git commit](https://stackoverflow.com/questions/5316438/reverting-pushd-git-commit) . Other developers are in the same office, and they should never commit anything to master (as neither should I, but... yeah, we don't have permissions per branch), so it's not a big problem to tell them and do any action required.

So in the end the question is: `git revert something` or `git reset --hard <TAG>` && `git push --force`? If `git revert`, which commandline should I use?