Git model for mobile app development with backend php

Hi there,
I have a mobile app with backend php. We have 3 servers and 3 main branches dev, staging and master(Production). For every new independent task I create a branch from master work on it and merge them to dev for QA and then staging for Final QA and finally to production. If any branches are dependent on current dev branch I create it from dev and merge back to dev then staging and finally master. My app developer follows the same approach.

My question is that is there a better approach?
Is using git rebase is better than using git merge?

Thank you