Git workflow
The Git tab is a full git client for the session's worktree — browse history, stage and commit, stash, push, and reshape the branch without leaving Plexus. It is scoped to the one session's worktree and branch; for the repository itself — the commit graph, branch management, and the project's main checkout — use the Project Git client.
Press ⌘4 to open it. The left pane is the commit log; the right pane shows either the commit you selected or the staging panel for uncommitted work. Throughout this page ⌘ is Cmd on macOS and Ctrl on Windows and Linux.
Commit history
The left pane lists the branch's commits newest-first. A divider labeled base marks the merge-base — commits above it are unique to this session's branch, commits below are shared with the base. When history runs deeper than the current page, click Load more to fetch earlier commits.
Click any commit to open its detail view: the full message, author, timestamp, and the changed files. Click a file to see its read-only unified diff; binary and oversized files show a placeholder instead of hunks. Merge commits are badged as such.

To undo a commit, click Revert in its detail view. Plexus runs git revert (with -m 1 for merge commits) and lands a new revert commit on top — your history stays intact. If the revert conflicts, resolve the markers in the Agent tab and the log refreshes.
Uncommitted changes
The Uncommitted changes node is pinned at the top of the commit list. Click it to open the staging panel, grouped into collapsible Staged, Unstaged, Conflicted, and Stashes sections. Click any staged or unstaged file to view its working-tree diff on the right; untracked files render their full contents as added lines.
Hover a file to reveal a quick stage/unstage icon, or use the section headers' Stage all / Unstage all buttons. Stage all includes untracked files.
Conflicted files carry a ! badge and cannot be staged. Resolve the conflict in the Agent tab first — once the markers are gone, the file moves to a stageable section.
Commit
With files staged, write a message in the composer and click Commit (or press ⌘Enter from the message field). Only staged files are committed; the button stays disabled until something is staged and a title is entered. On success the log and panel refresh.
Click the AI button to draft a message from the staged diff — a concise imperative subject and an optional body explaining the why. Edit both before committing. Tune the drafting instruction with the git.commit.aiPrompt setting; see Settings.
Stash and push
Stash saves all changes — staged, unstaged, and untracked — onto the stash; saved entries appear under Stashes, where Pop restores one. A conflicting pop keeps the stash intact and surfaces the conflict.
Push sends the branch to origin (non-force, with -u). It is disabled when HEAD is detached or the branch has no name. Git rejects a non-fast-forward push, so if you rebased or squashed after a prior push you'll need to force-push from the command line — Plexus does not offer that by design. To open a pull request once the branch is pushed, see Pull requests.
Branch operations
Three operations reshape the session branch in place. Because they rewrite history, each requires two modifiers to prevent accidental fires:
| ⌘4 | Switch to the Git tab |
| ⌘⌥R | Rebase the branch onto its base (linear, no merge commit) |
| ⌘⌥M | Merge the base into the branch (--no-ff merge commit) |
| ⌘⌥S | Squash all commits since the merge-base into one |
| ⌘Enter | Commit staged changes from the composer |
Rebase and merge fetch the base from origin first when it exists remotely, and a failed fetch is surfaced as an error rather than ignored. Each operation toasts its result — for example Rebased onto <base> or Already up to date. These reshape the session branch only; they do not integrate your work into the trunk.
Rebinding any reshape shortcut to a single-modifier key is rejected by settings validation. See Keyboard shortcuts to view or change the bindings.
Dirty worktree
If you trigger a rebase or merge with uncommitted changes, a Resolve dirty worktree dialog appears first with three choices:
- Commit & continue — commit the changes (optionally with a message you provide), then run the operation.
- Stash & continue — stash the changes; they stay stashed after the reshape.
- Stash & pop — stash, run the reshape, then attempt to restore the stashed changes.
Once the tree is clean the original operation runs, and any resulting conflicts appear in the conflict dialog.
Related
- Project Git client — the project-level git client: commit graph, branches, and the main checkout.
- Review — read the branch's full diff against its base before you commit or open a PR.
- Pull requests — push the branch and open a GitHub PR.
- Keyboard shortcuts — the full list of rebindable git shortcuts.