GitHub - gittower/git-flow-next: A modern reimplementation of git-flow in Go that offers greater flexibility while maintaining backward compatibility with the original git-flow and git-flow-avh. (original) (raw)

A modern implementation of the Git-flow branching model, written in Go. It is brought to you and maintaned by the team at Tower, the most powerful Git client for Mac and Windows.

Tower logo

About

git-flow-next is a modern reimplementation of the popular git-flow branching model. It's built with Go, focusing on reliability, extensibility, and developer experience.

Why This Project?

This project is maintained by the team behind Tower, one of the most popular Git clients for Mac and Windows. Having integrated git-flow into Tower over many years, we've gained deep insights into its strengths and areas for improvement.

As developers of version control tools, we're passionate about creating better developer experiences. While the original git-flow has served the community well, we saw an opportunity to build a more modern implementation that:

Our goal is to contribute back to the developer community with tools that make version control workflows more efficient and enjoyable.

Features

Installation

Homebrew (macOS and Linux)

brew install gittower/tap/git-flow-next

WinGet (Windows)

winget install GitTower.GitFlowNext

Manual Installation

  1. Download the latest release from the releases page
  2. Extract the binary to a location in your PATH
  3. Make it executable: chmod +x /path/to/git-flow

Quick Start

  1. Initialize git-flow in your repository:
  2. Start a new feature:
    git flow feature start my-feature
  3. Finish the feature:
    git flow feature finish my-feature

Shorthand Commands

git-flow-next provides convenient shorthand commands that automatically detect your current topic branch and execute the appropriate action. These aliases work similar to git-flow-avh and eliminate the need to specify the branch type manually.

Available Shorthands

Shorthand Full Command Description
git flow delete git flow delete Delete the current topic branch
git flow rebase git flow update --rebase Rebase the current topic branch
git flow update git flow update Update the current topic branch
git flow rename git flow rename Rename the current topic branch
git flow publish git flow publish Publish the current topic branch
git flow finish git flow finish Finish the current topic branch

How It Works

When you use a shorthand command, git-flow-next:

  1. Detects your current branch - Checks which branch you're currently on
  2. Identifies the branch type - Determines if it's a feature, release, hotfix, or support branch based on configured prefixes
  3. Executes the full command - Runs the corresponding full command with the detected type and branch name

Examples

On a feature branch

git checkout feature/my-awesome-feature git flow finish # Executes: git flow feature finish my-awesome-feature git flow rebase # Executes: git flow feature update --rebase

On a release branch

git checkout release/v1.2.0 git flow publish # Executes: git flow release publish v1.2.0

On a hotfix branch

git checkout hotfix/critical-bug git flow finish # Executes: git flow hotfix finish critical-bug git flow rebase # Executes: git flow hotfix update --rebase

Branch Detection

The shorthand commands automatically detect topic branches based on your git-flow configuration:

Error Handling

Command Options

All options and flags are passed through to the underlying commands:

Options work exactly like the full commands

git flow finish --keep --tag # Keeps the branch and creates a tag git flow update --rebase # Forces rebase strategy for update git flow delete --force # Force deletes the branch

Supported Branch Types

The shorthand commands work with all standard git-flow branch types:

Documentation

For detailed documentation, please visit our documentation site.

Configuration Reference

For comprehensive configuration information, see CONFIGURATION.md which includes:

Contributing

We welcome contributions! Please see our Contributing Guidelines for details on how to get involved.

Development

For information about the project's architecture and technical overview, see ARCHITECTURE.md.

Testing Resources

License

This project is licensed under the BSD 2-Clause License - see the LICENSE file for details.

Acknowledgments

This project builds upon the work of:

About Tower

git-flow-next is maintained by the team behind Tower, the popular Git client for Mac and Windows. With over a decade of experience in Git tooling and version control, we're committed to creating high-quality developer tools that make working with Git more efficient and enjoyable.