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, andbut commit --onlyhave been removed but commitnow takes sources positionally and uses-b/--branchfor the target branch and--aboveor--belowfor stackingbut squashstill takes sources positionally but now uses-t/--targetfor the target. It can squash all types of sources into commits, branches, and the uncommitted area.but amendandbut uncommitwork similarly tobut squashbut movestill takes sources positionally but now uses-t/--target,--above, or--belowfor the target. It can move commits, committed files, and branches. Use--unstackto unstack a branchbut rubhas been replaced bybut squashbut amendandbut squashnow default to uncommitted changes when you omit the source argument- Mutation commands now print concise results with change IDs by default
--jsonis now the standard machine-readable output flag, replacing--format json- History-editing commands now refuse to modify commits already merged upstream, with
--allow-mergedavailable 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: release/0.21.2...release/0.22.0
Downloads
Download bins from https://gitbutler.com/