Semantic Versioning – Switching from one major version to another?

How should versions be moved during development between two main versions?
For example, let's say that I have the version 1.5.0 and my goal is to publish a new major version incompatible with the major version 1.

As soon as I start developing and making changes, these changes will be incompatible with the past. Therefore, if you follow semantic version control, should I already replace it with 2.0.0? But the development is in progress and the code is still unstable.

Or should I bang like any other compatible feature -> 1.6.0, 1.6.1, 1.7.0 etc. and when the new major version is ready, just hit 2.0.0?

Should it be suffixed by something like 2.0.0-alpha then reset 2.0.0, once stable? Or bump 1.5.0-alpha (although that does not seem right).

P.S. Starting from scratch, it makes sense to start with 0.1.0because there is not yet a major version, but if there is one, it becomes tricky .. 🙂