"bzr revert ." reverts the changes to the tree *without* reverting the pending merges.
"bzr revert --forget-merge" forgets the pending merges without changing the tree.
What you *want* is to explicitly reject that the mainline has rejected your changes. Which is what "bzr merge; bzr revert ." does. It sets a pending merge, and then reverts the changes introduced by that merge.
Actually, you have it backwards.
"bzr revert ." reverts the changes to the tree *without* reverting the pending merges.
"bzr revert --forget-merge" forgets the pending merges without changing the tree.
What you *want* is to explicitly reject that the mainline has rejected your changes. Which is what "bzr merge; bzr revert ." does. It sets a pending merge, and then reverts the changes introduced by that merge.