ReleaseNotes: |-
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
ReleaseNotesUrl: https://github.com/gitbutlerapp/gitbutler/releases