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.

Tower supports git-flow out of the box - you won't have to install any additional components.

Enabling & Configuring Git-Flow

git-flow must be enabled per repository. To do so, activate the Settings view in Tower's sidebar and switch to the "Git-Flow" tab. Clicking the Enable Git-Flow button will then allow you to configure git-flow for this project.

The "Configure Git-Flow" dialog already suggests the standard configuration values. You will only have to change this if your team uses a different naming convention.

Note that enabling git-flow like this only adds a couple of configuration directives to your personal .git/config file. I.e. this will not be synced to the remote repository and therefore not affect other people on your team.

Working with Git-Flow

As soon as git-flow is configured for a repository, you can execute all major git-flow commands from the Git-Flow toolbar button.

Certain actions now also appear in contextual menus in Tower: e.g. when right-clicking a feature branch like "feature/login" in the sidebar, you'll find a new option named Git-Flow Finish Feature "login".

Aborted Actions
If a git-flow action that requires user-interaction (like e.g. merge conflicts) is interrupted, the git-flow script will not continue afterwards as it simply does not handle such cases. This affects all git-flow actions.
The currently active fork of git-flow is https://github.com/petervanderdoes/gitflow. You can file an issue there.