Please stop recommending Gitflow
In my opinion the problem with GitFlow and a lot of other git workflows is you end up holding a bunch of state inside of your git branches which is hard to decipher, complicated to manage, creates work for people ( with merge conflicts, and managing feature branches that need to be merged ), and is capable of losing progress.<p>My solution: USE FEATURE FLAGS. Keep the list of features and refactors you want deployed in a format that is easy to audit and reason about.<p>I like the Microsoft branching strategy: <a href="https:&#x2F;&#x2F;docs.microsoft.com&#x2F;en-us&#x2F;azure&#x2F;devops&#x2F;repos&#x2F;git&#x2F;git-branching-guidance?view=azure-devops" rel="nofollow">https:&#x2F;&#x2F;docs.microsoft.com&#x2F;en-us&#x2F;azure&#x2F;devops&#x2F;repos&#x2F;git&#x2F;git-...</a><p>Basically:<p>* Create feature branches.<p>* Merge into master when the feature is done. For long lived branches: Don&#x27;t keep them around. Merge them into master and put them behind a feature flag.<p>* Deploy to environments using release branches.<p>* USE FEATURE FLAGS. Do not hold state in your github repo&#x2F;branch merge status. Do not control features and refactors inside of your git branches, only merging the code you want to be deployed. Instead, put them behind feature flags and activate them using code.<p>There is a good book on the topic of feature flags titled &quot;Effective Feature Management&quot; that is a good overview. Feature flags do not have to only protect features. You can put refactors behind feature flags as well, or really anything.