Every feature branch should be a branch of dev and should be merged to dev after PR is reviewed.
The main branches should be created as required and should follow the hierarchy should be master<-uat<-qa<-dev.
Every feature, task is done in a separate branch named according to the JIRA issue name.
Any critical bug after production release is done via hotfix branches. It is branched off from master and merged back to master and dev after it’s done.