Using git-flow to automate your Git branching workflow
Git Flow has been discussed here many times, I&#x27;ll repost what I wrote last time (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15379210" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=15379210</a>):<p>Do not use Git Flow for a web application deployed on your own infrastructure (SaaS, microservice, mobile backend, etc.). It will slow down development and make your software less reliable.
The entire purpose of Git Flow is saving up changes to release later, e.g., saving up for a weekly release event. Don&#x27;t do that! Deploy your changes as soon as they are ready, if they aren&#x27;t ready don&#x27;t merge them into a shared branch. If you do Continues Delivery you don&#x27;t need &quot;hotfix&quot; branches because every changes goes out as soon as it is ready, so you don&#x27;t need any of the complexity of Git Flow.<p>By saving up changes for a release event it means more things are getting released at once. If there is a problem after deployment it will be harder to narrow down the cause. Git Flow fosters a harmful development mentality where developers merge untested changes to the develop branch, then move on, and expect someone to test and stabilize their changes before release. With trunk-based development (<a href="https:&#x2F;&#x2F;trunkbaseddevelopment.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;trunkbaseddevelopment.com&#x2F;</a>) or GitHub Flow (<a href="https:&#x2F;&#x2F;guides.github.com&#x2F;introduction&#x2F;flow&#x2F;" rel="nofollow">https:&#x2F;&#x2F;guides.github.com&#x2F;introduction&#x2F;flow&#x2F;</a>) developers take ownership of their code, and only merge to master after they have tested it. With a good deployment pipeline they can own their code all the way to production.<p>Git Flow also encourages humans to think about and make up version numbers, like 15.0.5. This is a pointless waste of brain power, web apps don&#x27;t need version numbers. The artifact systems (packages, containers, etc.) may need something, but it can just be an incrementing number that no on thinks about.<p>Git Flow wastes so much time, and makes everything it touches so complex, all to enable the harmful behavior of saving up changes for later, and enabling the pointless use of version numbers.<p>Trunk-based development and Continues Delivery is the default way people develop, it is how you would work if you had a one person company with one customer. It also is how the biggest web companies in the world work. It scales from smallest to largest. Just use trunk-based development. Stay away from Git Flow.