Skip to content
Theme:

Git Diff View

Press Ctrl+G to open or close the git diff view. It shows changed files on the left and the diff on the right. By default the diff shows all changes relative to HEAD (both staged and unstaged); press S to cycle the scope between Both, Unstaged, and Staged. You can navigate hunks, stage and unstage files, create commits, discard changes, queue inline comments, and submit those comments back to the agent as a structured prompt.

┌─────────────────┬───────────────────────────┐
│ Git Diff · Both │ Unified Diff │
│ │ │
│ ● src/main.rs │ @@ -10,6 +10,8 @@ │
│ src/lib.rs │ fn main() { │
│ Cargo.toml │ + let config = ... │
│ │ + setup(config); │
│ │ run(); │
│ │ } │
│ │ │
├─────────────────┴───────────────────────────┤
│ j/k move · space stage · S scope · C commit │
└─────────────────────────────────────────────┘

The file-list header shows the active scope: Git Diff · Both, Git Diff · Unstaged, or Git Diff · Staged. The bottom help bar changes depending on which pane is focused.

KeyAction
h / ←In the diff pane, focus the file list; in the file list, collapse the selected directory
l / → or EnterIn the file list, expand/open the selected entry and focus the diff
j / ↓Move down
k / ↑Move up
PageDown / PageUpPage through the diff pane
oToggle between the diff and the source view of the selected file
fToggle full-file context (show the entire file instead of just the hunks)
vCycle the diff layout: auto, unified, or split
?Show help
rRefresh the diff
Esc / Ctrl+GClose git diff view

Press S to cycle what the diff shows:

ScopeComparisonIncludes untracked files
Both (default)HEAD → worktreeYes
Unstagedindex → worktreeYes
StagedHEAD → indexNo

The active scope is shown in the file-list header.

KeyAction
SpaceToggle staging of the selected file or directory (stages unstaged entries, unstages staged ones; on a directory, applies to every file beneath it)
aStage all changes
AUnstage all changes
CCommit staged changes

C opens a commit-message composer at the bottom of the screen. Type a message and press Enter to commit the staged changes, or Esc to cancel. Git rejects the commit when nothing is staged.

Queued review comments are preserved (and re-anchored) when the diff refreshes or you switch scope, so cycling views never discards your feedback.

Press d to discard changes to the selected file. A confirmation prompt appears — press y to confirm or n / Esc to cancel. Discard restores the file to its state in HEAD (for tracked files) or removes it (for untracked files).

KeyAction
cAdd a comment at the current diff location
eEdit the comment under the cursor
xDelete the comment under the cursor
EnterSubmit a comment while editing that comment
sSubmit all queued comments to the agent (from the diff pane)
uUndo the last queued comment
  1. Navigate to a diff line you want to comment on.
  2. Press c to open the comment editor.
  3. Type your comment and press Enter to queue it.
  4. Add more comments if needed.
  5. Press s from the diff pane to submit all queued comments.

All queued comments are sent as a single prompt to the agent, grouped by file and including the line number, line kind, line text, and your feedback. This lets the agent understand exactly which changes you’re commenting on.

The git diff view is designed for reviewing agent-generated changes. After the agent modifies files, open the diff to:

  • See exactly what changed
  • Stage the changes you want to keep and commit them directly
  • Discard changes you don’t want
  • Add targeted feedback on specific lines
  • Request fixes to particular hunks without describing them in prose