Development happens on short lived branches, gets merged to master via pull request after code review if needed, but at least some automated testing should be done.
NEVER DO MERGE COMMITS: Always rebase + fast forward merging only.
Branches that never reached production and likely never will should be discarded after a while.
Branches that reached production e.g. hotfix branches should be converted to tags after a while.
I hate git-flow with a passion.
It is all about reducing feedback cycles.
It's rather simple for a new employee to understand, meshes in nicely with CI/CD systems and the release processes of the places I worked at.