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.
Diff: lib/izar.rb
4141
def grouped(filter: nil)4242
changes = status4343
+ return changes unless filter4444
candidates = changes.map(&:path)4545
+ matches = Spica.filter(filter, candidates)4646
endspace 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