We have the following scenario.
A Dev, Staging and Prod environment. When we have bugs, we fix and test them on our local environment, and then move them to Dev for system and regression testing. We then move them to Staging for testing and acceptance,
and once approved by the client, we move them to Prod.
We have just moved from a legacy system to the new system we built, so there are still lots of small bugs, and we usually move 2 per day. I think this would be considered "hot fix" in your terms.
We also have "modifications", which I believe are similar to your "features". There are about 10 of these a year and we move them as they are completed.
Should we create a new branch for each modification?
We don't have a "release" version. It is just incrementally fixed, or updated with a modification.
Which strategy seems right for us? Should we have one branch for dev, staging and prod, as well as a branch for each modification? I am thinking those would be 3 separate branches off of Main, and then each mod branch feeding dev?
I feel like we are over complicating this, but we want to do it right the first time.
Thanks for any help you can provide.