release/0.22.0

gitbutlerapp/gitbutlerrelease/0.22.0Jul 30, 2026by krlvi

AI Summary

A major release featuring Native GitHub Stacked PR Support and a comprehensive overhaul of the CLI history-editing commands, alongside new TUI features like external file opening and Catppuccin highlighting.

Key Highlights

  • Introduced native GitHub Stacked PR support with automatic metadata injection and fallback options.
  • Overhauled CLI commands: removed `rub`, `stage`, `unstage`, and `but merge` (replaced by `but land --yes`).
  • TUI now supports opening files in external programs, discarding multiple branches at once, and uses Catppuccin syntax highlighting.
  • Cherry-picking now creates conflicted commits instead of blocking when conflicts occur.

Breaking Changes

  • Removed CLI commands: `rub`, `stage`, `unstage`.
  • Removed `but merge` command.
  • Changed CLI command signatures for `commit`, `amend`, `squash`, and `move` to use positional arguments.
  • Changed `--format json` to `--json` as the standard output flag.

New Features

  • Native GitHub Stacked PR Support.
  • TUI external file opening support.
  • TUI discard multiple branches support.
  • Catppuccin syntax highlighting in diffs.

Full Release Notes

## Changes
Native GitHub Stacked PR Support is available in gitbutler 🥞🎉

- GitButler now automatically uses GitHub's native stacked pull requests for enrolled repositories, falling back to description footers otherwise
- You can now choose per project whether GitButler adds stack metadata to pull and merge request descriptions
- Cherry-picking now creates conflicted commits when a pick conflicts instead of blocking it

## CLI
Breaking changes: This release overhauls the `commit`, `amend`, `squash`, `discard` and `move`. The commands `rub`, `stage` and `unstage` have been removed. For agentic use its important to update the skill (`but skill check --update`)

- The CLI no longer reads change assignments from the desktop app. All worktree changes are treated as uncommitted; `but stage`, `but unstage`, and `but commit --only` have been removed
- `but commit` now takes sources positionally and uses `-b/--branch` for the target branch and `--above` or `--below` for stacking
- `but squash` still takes sources positionally but now uses `-t/--target` for the target. It can squash all types of sources into commits, branches, and the uncommitted area.
- `but amend` and `but uncommit` work similarly to `but squash`
- `but move` still takes sources positionally but now uses `-t/--target`, `--above`, or `--below` for the target. It can move commits, committed files, and branches. Use `--unstack` to unstack a branch
- `but rub` has been replaced by `but squash`
- `but amend` and `but squash` now default to uncommitted changes when you omit the source argument
- Mutation commands now print concise results with change IDs by default
- `--json` is now the standard machine-readable output flag, replacing `--format json`
- History-editing commands now refuse to modify commits already merged upstream, with `--allow-merged` available for deliberate overrides
- Errors now include recovery guidance for history edits, pull conflicts, cherry-picks, and pull or merge request actions, including newly conflicted commits and operations rejected by commit dependencies

## TUI

- The TUI now has a dedicated squash mode that lets you select the source or target first and squash across multiple branches, replacing rub mode
- The TUI can now open files and hunks in configured external programs, with multi-file selection, user-defined macOS apps, and per-extension defaults
- The TUI can now discard multiple branches at once
- The TUI now supports `--remember-selection`, restoring the previous selection when reopened
- TUI diffs now use Catppuccin syntax highlighting
- Fixes tab indentation in TUI diffs

## Fixes

- Fixes web links for self-hosted forges that use a custom port
- Fixes an issue where failed cherry-picks could fail silently
- Fixes merge handling so adjacent edits to the same file are detected as conflicts, matching Git's behavior
- Bitbucket: Fixes an issue where pull requests created through GitButler omitted default reviewers

**Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.21.2...release/0.22.0

## Downloads

Download bins from https://gitbutler.com/