There's several existing strategies for deploying and managing development work and release. They each have their own opinions, but roughly cover a few major situations:
- Developing a new feature
- Which branches should be, at all times, deployable, tested code
- Under what conditions a code review or approval is required to merge code into a new branch
- How many deployment environments (e.g. production only, or staging and production) you intend to have available, and to whom