git push -f origin myBranch
should work (provided you are aware this can be dangerous if MyBranch was already fetched by others in their own repo)
Since 2012, you also have:
git push --force-with-lease(Git 1.8.5+ Q3 2013) which is safer, andgit push --force-if-includes(Git 2.30+, Q1 2021), which attempts to ensure that what is being force-pushed was created after examining the commit at the tip of the remote ref that is about to be force-replaced.
Note: if your remote repo (‘origin’) has its config set with
receive.denyNonFastForwards true
it will deny any non fast-forward push (even when forced).
See “Is there a way to configure git repository to reject ‘git push –force’?”.
The OP user654019 reports
I managed to solve the problem this time by setting
denyNonFastForwardstofalseand using-fto force the push
If the OP didn’t have access to the repo, he/she would have to:
- reset the local HEAD to its original position (see “Recover from
git reset --hard?“):
git reset HEAD@{1} - make a new commit which cancel your merge, as described in the ProGit book, with
git revert:
git revert -m 1 HEAD~(in your case)
By example:
$ git revert -m 1 [sha_of_C8]
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
1 files changed, 0 insertions(+), 2 deletions(-)

A complete discussion on how to revert a merge can be found here.
The idea remains to generate only new commits, including one reverting the changes introduced by the merge commit.
You then can push that new commit, as a fast-forward change.