Let's cover the principles of what is being proposed:
- The master branch:
- The master branch is the only way to release anything to production.
- The master branch should always be in a ready-to-release state.
- Protect the master branch with branch policies.
- Any changes to the master branch flow through pull requests only.
- Tag all releases in the master branch with Git tags.
- The feature branch:
- Use feature branches for all new features and bug fixes.
- Use feature flags to manage long-running feature branches.
- Changes from feature branches to the master only flow through pull requests.
- Name your feature to reflect their purpose, like so:
List of branches:
features/feature-area/feature-name users/username/descriptionusers/username/workitem ...