git-flow is a set of conventions about how to work with Git. It defines workflows for the most common tasks - like starting & finishing features, hotfixes or releases.
Under the hood, each git-flow command simply executes multiple Git commands. E.g., finishing a feature branch (with a single git-flow command) checks the 'develop' branch out, integrates the feature branch, then deletes it and pushes the updated 'develop' branch to the remote repository.