| branch | status |
|---|---|
| master | |
| dev |
Advance in a branching model according to the current branch or a branch specified with an argument. For most existing branches, the default action is release. If a given branch does not exist, Flow creates it as a feature or a hotfix depending on the current branch or a keyword (feature/hotfix).
Additionally, Flow handles version incrementing and maintains a changelog. Before proceeding, it verifies the current repository for branching model compliance and offers to correct any detected imperfections.
- Flow requires no arguments and derives a default action.
- Flow switches between branches accordingly and advises what to do next.
- Flow can create pull requests instead of releasing directly.
- Flow maintains separate production branches for major versions, such as
prod-1. - Flow supports parallel hotfixing, even for separate production branches.
- Flow validates and automatically fixes project structures to conform to the branching model.
- Flow pulls and pushes all key branches and checks whether local branches are not behind.
- Flow handles semantic versioning across all key branches. Read more about version handling with Flow.
- Flow keeps track of a release history with the Keep a CHANGELOG convention. Read more about changelog handling with Flow.
- Flow can initiate a git branching repository in any folder with or without files.
- Flow can convert any existing git repository to a git branching model.
- Flow automatically adapts to existing branches, such as 'release' instead of the default 'staging'.
Download the latest release from GitHub. You can install as a single file (easiest), with compiled distribution package (useful for system-wide install) or from the source.
- Bash, version 3.2 or later
- Git, version 1.8.0 or later
- GNU getopt
- On macOS install with Homebrew (
gnu-getopt) or with MacPorts (getopt)
- On macOS install with Homebrew (
- GNU sed
- On macOS install with Homebrew
gnu-sed
- On macOS install with Homebrew
- GNU awk
- On macOS install with Homebrew
homebrew/dupes/grep
- On macOS install with Homebrew
- Place flow.sh into your
$PATH(e.g.~/bin). - Make the script executable.
chmod +x flow.sh
- Extract the archive.
tar -xvzf flow-*-linux.tar.gz - run
installscript as root; this will proceed a system-wide installation into/usr/local.cd flow-*-linux sudo ./install
You can override installation paths using environment variables.
BINPATH: where the script will be placed,/usr/local/binby default.SHAREPATH: where support files will be placed,/usr/local/shareby default.USRMANPATH: where manpage will be placed,$SHAREPATH/man/man1by default.
This is how to install the script without root permissions.
BINPATH=~/bin SHAREPATH=~/.local/share ./installYou will need the following dependencies:
- GNU Make
rst2man(available in Docutils, e.g.apt-get install python-docutilsorpip install docutils)
git clone https://github.com/internetguru/flow.git
cd flow
./configure && make && sudo compiled/installYou can specify following variables for make command which will affect default parameters of install script:
PREFIX: Installation prefix,/usr/localby default.BINDIR: Location forflowscript,$PREFIX/binby default.
For example like this:
PREFIX=/usr makeSee the man page for more information and examples.
Testing the script requires a built 'flow' command and Bash Unit Testing Tool -- AKA the 'butt' command.
butt ~/flow/test/test.buttPull requests are welcome. Don't hesitate to contribute.
Copyright © 2026 Internet Guru
This software is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.
Disclaimer: This software is provided "as is", without warranty of any kind, express or implied. In no event shall the authors or copyright holders be liable for any claim, damages or other liability.
The standard CC BY-NC-SA license prohibits commercial use. If you wish to use this software in a commercial environment or product, we offer flexible commercial licenses tailored to:
- Your company size.
- The nature of your project.
- Your specific integration needs.
Note: In many instances (especially for startups or small-scale tools), this may result in no fees being charged at all. Please contact us to obtain written permission or a commercial agreement.
Contact for Licensing: info@internetguru.io
Are you looking to get the most out of this project? We are available for:
- Custom Development: Tailoring the software to your specific requirements.
- Integration & Support: Helping your team implement and maintain the solution.
- Training & Workshops: Seminars and hands-on workshops for your developers.
Reach out to us at info@internetguru.io — we are more than happy to assist you!
If you find this script useful, please consider making a donation to support its developers. We appreciate any contributions, no matter how small. Donations help us to dedicate more time and resources to this project, including covering our infrastructure expenses.
Please note that we are not a tax-exempt organization and cannot provide tax deductions for your donation. However, for donations exceeding $500, we would like to acknowledge your contribution on project's page and in this file (including the man page).
Thank you for your continued support!
- Czech Technical University in Prague
- WebExpo Conference in Prague
- DATAMOLE data mining and machine learning
- git-flow – The original Vincent Driessen's tools.
- git-flow (AVH Edition) – Maintained fork of the original tools.
- See also cheatsheet
- HubFlow – Git Flow for GitHub by DataSift.
- gitflow4idea – Plugin for JetBrains IDEs.
- GitKraken – Cross-platform Git GUI with Git Flow operations.
- SourceTree – Git GUI for macOS and Windows with Git Flow support.
- GitFlow for Visual Studio