Skip to content

Interactive rebase

e on a non-HEAD commit (from the commit list or detail view) opens the Interactive rebase plan editor. Same semantics as git rebase -i <commit>~1, but visual, and with an in-place reword editor.

The view lists every commit from the selected one up to HEAD, with the default action pick next to each row.

Rebase plan editor, r Reword, d Drop, Space to grab + reorder, Enter to apply

PressAction
pPick, keep the commit.
rReword, keep the commit; open the inline subject editor.
eEdit, pause the rebase at this commit so you can amend.
sSquash, combine into the previous commit, keep both messages.
fFixup, combine into the previous commit, drop this message.
dDrop, remove the commit.
SpaceGrab the row, ↑↓ now reorders the commit instead of moving the cursor; Space again or Enter drops the grab.
↑ / ↓Move cursor (or slide the grabbed row).
Mouse hoverSoft ▷ glyph in the gutter follows the pointer (no row background), stays live during grab so you can see exactly where the held commit will land.
Mouse clickWhen idle: first click on a row just moves the cursor there; clicking the already-selected row cycles its action (and opens the inline reword editor when it lands on Reword). When grabbed: slide the held commit to the clicked row (commits in between shift by one, no swap) and stay in grab mode so you can keep nudging. Release with Space or Enter.
← / →Cycle the action of the focused row.
EnterApply the plan, gitoui writes it to .git/rebase-merge/git-rebase-todo and runs git rebase -i.
Shift+AAbort previous, only fires when a stale rebase is still on disk (.git/rebase-merge/). Runs git rebase --abort so you can re-plan from a clean state. The footer surfaces this hint only when there’s something to abort.
EscCancel (releases the grab first if one is active).

Hitting r on a commit, or moving onto a row already set to reword, opens the inline subject editor. You type the new message on the row itself.

PressAction
EnterCommit the reword.
EscCancel.
Ctrl+H / Ctrl+W / Ctrl+BackspaceDelete word to the left.
Ctrl+DeleteDelete word to the right.
Ctrl+Left / Ctrl+RightJump cursor by word.

If your rebase pauses (conflict, edit action, etc.), gitoui surfaces the state in two places so you can’t miss it: a ⏸ rebase paused badge directly on the row of the commit git is paused on (read from .git/rebase-merge/stopped-sha), and a resume banner when you open the rebase view. From the commit list, e jumps you straight to the banner so you don’t have to navigate manually.

  1. Open gitoui, the resume banner appears automatically when a .git/rebase-merge/ exists.
  2. Pick: c continue · s skip · a abort
  3. The banner re-opens on every launch until the rebase is resolved (or aborted).
PressAction
c / Shift+CContinue (git rebase --continue).
s / Shift+SSkip current commit (git rebase --skip).
a / Shift+AAbort (git rebase --abort).
EscClose the resume view without acting (rebase stays paused).

Rebase resume banner, paused state with c continue / s skip / a abort chips, paused commit highlighted

ui.common.rebase_view controls how dense the plan view is:

Actions sit next to commit messages, easiest to read at a glance.

[ui.common]
rebase_view = "inline"