You simply can force the push:
git push -f bitbucket
But that assumes that nobody has alredy pulled from your BitBucket repo (or they will have to reset their local branch to the new remote history).
Plus, once a push is forced, there is no way to know who changed that history on the remote side.
This is consistent with your error message:
To git@bitbucket.org:Username/project.git
! [rejected] Development -> Development (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:Username/project.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Here is an extract of "git push
Note about fast-forwards":
In such a case, and only if you are certain that nobody in the meantime fetched your earlier commit
A
(and started building on top of it), you can run "git push --force
" to overwrite it.
In other words, "git push --force
" is a method reserved for a case where you do mean to lose history.
The other (safest) option is to use git revert
(even for a range of commits), to create a new commit (cancelling an old one), that you can push.