Izar

Pure Ruby Git staging

Review the change before it becomes history.

Izar separates staged, unstaged, and untracked work, then lets you move files or individual hunks without invoking the Git executable.

main ↑0 ↓03 changes
Diff: lib/izar.rb
4141def grouped(filter: nil)
4242 changes = status
4343+ return changes unless filter
4444 candidates = changes.map(&:path)
4545+ matches = Spica.filter(filter, candidates)
4646end
space stage · s hunk · c commit · q quit

Small operations with visible boundaries.

The CLI, TUI, and native view share one model, so status and mutations behave the same everywhere.

Inspect

Group repository status, filter paths, and view syntax-highlighted diffs.

Stage

Move a whole path or one hunk between the worktree and index.

Protect

Require explicit confirmation before discard and reject empty commits.

The staging loop stays under your hands.

j/kMove between files
spaceToggle selected file
sToggle selected hunk
aStage all changes
cCommit staged work
XConfirm discard

Open a repository workspace.

gem install izar
izar status --tui