GitExtensions.GitFlow
1.0.2
dotnet add package GitExtensions.GitFlow --version 1.0.2
NuGet\Install-Package GitExtensions.GitFlow -Version 1.0.2
<PackageReference Include="GitExtensions.GitFlow" Version="1.0.2" />
<PackageVersion Include="GitExtensions.GitFlow" Version="1.0.2" />
<PackageReference Include="GitExtensions.GitFlow" />
paket add GitExtensions.GitFlow --version 1.0.2
#r "nuget: GitExtensions.GitFlow, 1.0.2"
#:package GitExtensions.GitFlow@1.0.2
#addin nuget:?package=GitExtensions.GitFlow&version=1.0.2
#tool nuget:?package=GitExtensions.GitFlow&version=1.0.2
GitExtensions.GitFlow
A Git Extensions plugin that brings the
git-flow branching model into the
Git Extensions GUI. Instead of remembering the git flow command line, you drive feature, release,
hotfix, bugfix and support branches from a single dialog.
This is a standalone, NuGet-distributed revival of the GitFlow plugin that used to ship with Git Extensions. The original built-in plugin was removed in Git Extensions 7.0 by gitextensions/gitextensions#12894 ("remove obsolete GitFlow plugin", merged March 2026); this project brings it back, rebuilt for the Git Extensions 7.0 plugin architecture (.NET 10).
Features
- Initialize git-flow in a repository with default branch settings (
git flow init -d). - Start a new branch of any git-flow type:
feature,bugfix,hotfix,release,support- optionally based on a chosen local branch.
- Finish a branch, with optional push after finish (
-p) and squash (-S). - Publish a branch to a remote.
- Pull a branch from a selected remote.
- Detects the current
HEADand automatically pre-selects its branch type. - Reports the executed
git flowcommand and its output (success/error) right in the dialog. - Signals Git Extensions to refresh after operations so the commit graph stays in sync.
Requirements
- Windows with Git Extensions 7.0 (or any
7.xrelease). - git-flow installed and available on your
PATH. The plugin shells out togit flow …, so the git-flow extension (the AVH edition is recommended) must be installed separately. Git for Windows ships with it in many setups; otherwise install it manually. - The .NET 10 Windows runtime is provided by the Git Extensions host — you don't need to install it separately to use the plugin.
Installation
Via the Plugin Manager (recommended)
Install it through the Git Extensions Plugin Manager, which fetches the package and places the assemblies in the correct folder for you.
Manual installation
- Build the project (see Building from source) or grab
GitExtensions.GitFlow.dllfrom a release. - Copy
GitExtensions.GitFlow.dll(and its.pdb, if you want symbols) into the folder Git Extensions loads user plugins from. The Plugin Manager is the supported way to find/manage this location. - Restart Git Extensions.
Usage
- Open a repository in Git Extensions.
- Launch the plugin from Plugins → GitFlow.
- If the repository hasn't been initialized for git-flow yet, click Init — this runs
git flow init -dto set up the standard branch layout. - Start a branch: pick a type (
feature,bugfix,hotfix,release,support), enter a name, and optionally tick Based on to branch off a specific local branch. - Manage existing branches: choose a type to list its branches, then:
- Finish – completes the branch (available for every type except
support); enable push after finish (hotfix/release) and/or squash as needed. - Publish – pushes the branch to a remote.
- Pull – pulls the branch from a selected remote.
- Finish – completes the branch (available for every type except
The executed command and its result are shown in the dialog, and Git Extensions refreshes automatically when an operation changes the repository.
Building from source
Prerequisites
- .NET 10 SDK
- Visual Studio 2022/2026 with the .NET Desktop (Windows Forms) workload, or the
dotnetCLI - Internet access on the first build (to fetch the pinned Git Extensions 7.0.1 reference assemblies)
- A local Git Extensions 7.x installation is optional — needed only for F5 debugging, not for the build
Version compatibility (why the build pins a floor)
The Git Extensions assemblies are not strong-named and their AssemblyVersion tracks the exact
product build (e.g. 7.1.0.87). The .NET assembly loader accepts a host assembly whose version is
greater than or equal to the one the plugin was compiled against (roll-forward), but refuses a
lower one (FileLoadException at load — the plugin silently never appears). So a plugin compiled
against a 7.1.0 install fails to load on 7.0.1.
To load across the whole 7.x line, the plugin must be compiled against the lowest supported 7.x
(the "floor"). Directory.Build.targets enforces this: it downloads the
pinned Git Extensions 7.0.1 portable assemblies into a git-ignored .gitextensions-ref/ cache and
points the reference HintPaths at them via $(GitExtensionsRefPath). Your installed Git Extensions
version no longer influences the references.
Configure the Git Extensions path
Compilation references are provisioned automatically from the floor — a fresh clone needs no
configuration to build. The only per-user setting is the debug host for F5, which is optional and
lives in the git-ignored *.csproj.user:
create
src/GitExtensions.GitFlow/GitExtensions.GitFlow.csproj.user:<Project> <PropertyGroup> <GitExtensionsExecutablePath>C:\Program Files\GitExtensions\GitExtensions.exe</GitExtensionsExecutablePath> </PropertyGroup> </Project>
Do not point the references at your installed
C:\Program Files\GitExtensionsif it is newer than 7.0.1 — that reintroduces the roll-forward problem above. UseGitExtensionsRefPathonly with a 7.0.x copy.
Build
dotnet build src/GitExtensions.GitFlow/GitExtensions.GitFlow.csproj -c Release
The first build downloads the pinned Git Extensions 7.0.1 reference assemblies into .gitextensions-ref/
(cached for subsequent builds). The build produces only the plugin DLL — the host supplies the shared
dependencies at runtime.
Package (NuGet)
dotnet pack src/GitExtensions.GitFlow/GitExtensions.GitFlow.csproj -c Release
This uses GitExtensions.GitFlow.nuspec to
produce a .nupkg whose GitExtensions.GitFlow.dll/.pdb are packed under lib, with a dependency
on the virtual GitExtensions.Extensibility package ([7.0,8.0)).
Debugging
With GitExtensionsExecutablePath set, pressing F5 launches the installed GitExtensions.exe
so you can debug the plugin against a real host.
Project structure
| Path | Purpose |
|---|---|
src/GitExtensions.GitFlow/GitFlowPlugin.cs |
Plugin entry point — the [Export(typeof(IGitPlugin))] registration. |
src/GitExtensions.GitFlow/GitFlowForm.cs |
The dialog and all git-flow command logic. |
src/GitExtensions.GitFlow/GitExtensions.GitFlow.csproj |
Build configuration and Git Extensions references. |
src/GitExtensions.GitFlow/GitExtensions.GitFlow.nuspec |
NuGet packaging manifest. |
Directory.Packages.props |
Central NuGet package version management. |
Plugin metadata
| Name | GitFlow |
| Id (GUID) | 83E1F3F1-B502-4BFB-97D9-7EF108252401 |
| Target framework | net10.0-windows |
| Git Extensions API | GitExtensions.Extensibility [7.0, 8.0) |
| Version | 1.0.1 |
How it works
The plugin implements IGitPlugin / IGitPluginForRepository. When invoked it opens GitFlowForm,
which builds and runs git flow … commands through the Git Extensions Git executable wrapper and
surfaces the output back in the dialog. It does not reimplement git-flow — it delegates to the
git-flow CLI you have installed.
Contributing
Issues and pull requests are welcome at https://github.com/joaoduarte19/GitExtensions.GitFlow.
When the targeted Git Extensions version changes, please follow semantic
versioning and keep GitExtensions.Extensibility pinned to a single Git
Extensions major version — the plugin API can change between releases.
License
Distributed under the MIT License. See LICENSE for details.
Acknowledgements
- Based on the original GitFlow plugin from the Git Extensions project, which was removed in Git Extensions 7.0 by gitextensions/gitextensions#12894.
- The git-flow branching model by Vincent Driessen (nvie/gitflow).
- Scaffolded from the Git Extensions Plugin Template.
- Some icons by Yusuke Kamiyamane.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net is compatible. |
-
- GitExtensions.Extensibility (>= 7.0.0 && < 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.