Git Flow:
- problems:
- long-lived feature branches and merge hell (i.e. merge conflicts with other people’s code): https://stxnext.com/blog/2018/02/28/escape-merge-hell-why-i-prefer-trunk-based-development-over-feature-branching-and-gitflow/
- database migrations – e.g. a db migration living in a long-lived feature branch
Trunk Based Development: release from tagged branches off master
- short-lived branch and merge – one core rule: deploy a new commit to trunk every day
- revert commit (if something ends up in production that you don’t want)
- to avoid delivering code of an unfinished feature: branch by abstraction, feature flag
- one button rollbacks (i.e. in CI/CD pipeline)
- automated smoke tests in production that automatically roll back code if it fails a test
- commit directly to master
Links: