This is the key - decoupled. When you have to rollback commits across multiple service, they are not decoupled, and you're doing something wrong.
Each service should be fully independent, able to be be deployed & rolled-back w/o other services changing.
If you're making API changes, then you have to start talking about API versioning and supporting multiple versions of an API while clients migrate, etc.