The project I work in is very chaotic, decisions change in a matter of minutes, so my strategy is to procrastinate as much as possible software configuration management decisions.
Particularly, merging into master: we only merge to master after we deployed in production and we have a confirmation e-mail that smoke tests worked fine. This way we embrace chaos by managing the risk of decision changes, rollbacks in the deploy, technical problems or whichever issue may happen.
At the beginning we merged into master before going into production, but technical issues, rollbacks, management decisions at the very last minute… caused lots of problems to us, so we changed the strategy, and it’s been working fine for the last 3 years.
If, eventually, after going to production some regression is found, that’s a hotfix and must be handled like that 🙂