Git flow is a semi-standardized workflow for dealing with projects in Git. It can be daunting, but the rules involve creating a stringent practice for when branches should be committed to or merged in order to prevent deploying buggy code or releases. A diagram of it is as follows:
As you can see, there are a number of different streams. You have the master branch, hotfix branches for fixing emergency bugs, releases, the develop branch, and feature branches. These all have very particular uses, which we'll go into now.