GitFlow Documentation

GitFlow is a Git GUI for macOS with the most advanced diff visualization engine. Powered by SwiftSyntax for structural code analysis, GitFlow helps you understand code changes at a deeper level than line-by-line diffs.

Open Source: GitFlow is completely free and open source under the MIT license. Contribute on GitHub.

Installation

Install GitFlow with a single command. The installer automatically downloads the latest release and configures everything for you.

Quick Install

Run this command in Terminal:

curl -fsSL https://raw.githubusercontent.com/Nicolas-Arsenault/GitFlow/main/scripts/install.sh | bash

The installer will:

Tip: After installation, open GitFlow from Spotlight (Cmd + Space, type "GitFlow") or from the Applications folder.

Quick Start

Get up and running with GitFlow in under a minute.

Open a Repository

Use Cmd + O or drag a folder onto the GitFlow icon to open a repository.

Clone a Repository

  1. Use Cmd + Shift + O to open the clone dialog
  2. Enter the repository URL (HTTPS or SSH)
  3. Choose a destination folder
  4. Click "Clone"

System Requirements

macOS Version

macOS 13 (Ventura) or later

Architecture

Apple Silicon (M1/M2/M3) and Intel

Git

Git 2.30+ (uses system Git by default)

Storage

~100 MB for application

Repository Management

GitFlow provides comprehensive repository management capabilities.

Repository Overview

When you open a repository, the overview screen displays:

Recent Repositories

Access recently opened repositories from the welcome screen or via Cmd + Shift + R.

Staging & Commits

GitFlow offers granular control over what goes into each commit.

File States

Files in your working directory can be in these states:

Partial Staging

Stage exactly what you want to commit:

Tip: Use partial staging to create focused, atomic commits that are easier to review and revert.

Creating Commits

  1. Stage your changes
  2. Write a commit message (follow the Conventional Commits format)
  3. Press Cmd + Enter or click "Commit"

Amending Commits

To modify the most recent commit:

  1. Check "Amend previous commit" below the commit message
  2. The previous commit message will be loaded
  3. Make changes and commit

Warning: Only amend commits that haven't been pushed. Amending pushed commits requires a force push and can disrupt collaborators.

Branch Management

Comprehensive branch operations with safety guardrails.

Branch Operations

Branch Safety

GitFlow prevents accidental data loss:

Comparing Branches

Select two branches and choose "Compare" to see:

Diff Visualization

GitFlow's diff engine is the core of the application, designed for professional code review workflows with structural code analysis.

Structural Diff View

Powered by SwiftSyntax AST parsing, GitFlow can show you what code structures changed:

Semantic Equivalence Detection

GitFlow can detect when changes don't affect behavior:

Change Impact Analysis

See how your changes affect the rest of the codebase:

View Modes

Unified View

Additions and deletions inline, optimized for quick scanning.

Split View

Side-by-side comparison with synchronized scrolling.

Structural View

See changed functions and types, not just lines.

Word-Level Highlighting

Changes within lines are highlighted at the token level:

Syntax Highlighting

Automatic language detection with support for 200+ languages. Colors are designed to work with diff highlighting, not against it.

Merge & Rebase

Merge Options

Interactive Rebase

Visual interface for rewriting history:

Conflict Resolution

When conflicts occur, GitFlow displays:

GitHub Integration

GitFlow provides deep integration with GitHub for a complete workflow without leaving the app.

Authentication

GitFlow uses OAuth for secure GitHub authentication:

  1. Go to Preferences → GitHub
  2. Click "Sign in with GitHub"
  3. Authorize GitFlow in your browser
  4. You're connected!

Repository Browsing

Once authenticated, you can:

Pull Requests

Full pull request workflow support:

Tip: Drag a branch to the GitHub sidebar section to quickly create a pull request.

Remote Operations

Fetch

Download changes from remote without merging. Use Cmd + Shift + F or enable auto-fetch in preferences.

Pull

Fetch and integrate changes:

Push

Upload your commits to the remote. GitFlow will warn you about:

Force Push: Requires double confirmation. Use with extreme caution on shared branches.

Stash Management

Temporarily save changes without committing.

Stash Operations

Submodules

GitFlow detects and displays submodule status.

Submodule Features

Configuration

Access preferences via Cmd + ,

Available Settings

Keyboard Shortcuts

Action Shortcut
Open repository Cmd + O
Clone repository Cmd + Shift + O
Create branch Cmd + B
Switch branch Cmd + Shift + B
Commit Cmd + Enter
Fetch Cmd + Shift + F
Pull Cmd + Shift + P
Push Cmd + P
Stash changes Cmd + Shift + S
Preferences Cmd + ,

Troubleshooting

GitFlow can't find Git

Ensure Git is installed and accessible:

which git
git --version

If using a custom Git installation, set the path in Preferences → Git → Git Binary Path.

Authentication failures

Repository appears corrupted

Try running Git's built-in repair:

git fsck --full
git gc --prune=now

Report Issues

Found a bug? Please report it on our GitHub Issues page with: