Git Flow

Features, releases and hotfixes without the git-flow extension, using the same configuration.

Gitlo implements the Git Flow model with plain git commands. It reads and writes the same configuration as the git-flow extension (gitflow.branch.* and gitflow.prefix.* in .git/config), so you can use either one on the same repository.

Initialize

Click the Flow button in the toolbar, or run Flow : initialiser / configurer Git Flow… (initialize / configure) from the palette. Pick the production branch (main or master), the development branch (develop), the prefixes (feature/, release/, hotfix/, bugfix/, support/) and the tag prefix (for example v).

Start a branch

Run Flow : démarrer… (start a feature / release / hotfix).

  • For a release or a hotfix, Gitlo suggests the next version based on the latest tag.
  • Only one release can be in progress at a time, as Git Flow requires.

Publish

Flow : publier la branche courante (publish the current branch) pushes the branch (push -u), then offers to open a pull request (into develop for a feature).

Finish

Flow : terminer la branche courante… (finish the current branch) opens a window that shows the exact commands that will run before anything happens.

BranchWhat “Finish” does
feature / bugfix--no-ff merge (or squash, then commit) into develop
releasemerge into the production branch, annotated tag, then merge of the tag into develop
hotfixsame as a release, but the tag is merged into the release in progress if there is one, otherwise into develop

Options: finish through a pull request instead of locally, squash, delete the local and remote branch, push. The tag is signed when commit.gpgsign is enabled.

Checks

Before starting, Gitlo checks that the working copy is clean, that no operation is in progress and that the branches are not behind their remote. Any of these stops the finish. Likely conflicts are reported up front (git merge-tree) but do not stop it.

Conflicts and undo

  • If a merge hits a conflict, resolve it, then click Continuer (Continue) in the banner: the finish picks up where it stopped (Flow : reprendre la finalisation).
  • A complete local finish can be undone in one go with Ctrl Z, tag included. A finish resumed after a conflict, or one that pushed, cannot be undone.