ichi is modal and keyboard-first. Most keys are contextual — the same letter
does the sensible thing for the view you’re in — but a handful are global.
These work from (almost) anywhere:
| Key | Action |
|---|
| g | Return to the commit graph (home) |
| s | Open Status |
| b | Open Branches |
| S | Open Stashes |
| p | Open Pull Requests |
| : | Open the command line |
| Ctrl+P / Ctrl+K | Open the command palette |
| T | Theme selector |
| ? | Help for the current view |
| Esc | Go back / close |
| q | Quit (from the graph) |
Movement keys are consistent across every list and view:
| Key | Action |
|---|
| j / ↓ | Down |
| k / ↑ | Up |
| g / G | Top / bottom |
| / | Search within the view |
| Enter | Select / open details |
| Tab | Switch panel or focus |
| Key | Action |
|---|
| Enter | Commit details |
| d | Diff for the selected commit |
| c | Check out the selected commit |
| y | Copy the commit hash |
| Key | Action |
|---|
| Space | Stage / unstage file |
| a / u | Stage all / unstage all |
| c | Commit |
| d | Diff selected file |
| Tab | Switch between staged / unstaged |
In the diff view:
| Key | Action |
|---|
| j / k | Move by line |
| J / K | Move by hunk |
| Space | Select a line |
| s | Stage the current hunk |
| Enter | Stage selected lines |
| u | Unstage |
| Key | Action |
|---|
| c | Check out branch |
| b | New branch |
| d | Diff |
| / | Search branches |
Press : to enter a Git command. The available commands:
| Command | Action |
|---|
:push | Push to remote |
:pull | Pull from remote |
:fetch | Fetch from all remotes |
:merge <ref> | Merge the selected branch |
:rebase <ref> | Rebase onto the selected branch |
:checkout <ref> | Check out a branch or commit |
:diff | Show diff for the selected commit |
:pick | Cherry-pick the selected commit |
:revert | Revert the selected commit |
:reset | Reset to the selected commit (soft) |
:drop | Drop the selected commit or stash |
:apply | Apply the selected stash |
:pop | Pop the selected stash |
:blame | Line-by-line attribution for a file |
:log | Show commits for a file |
:w | Stage all changes |
:wq | Open the commit dialog and quit |
:q | Quit |
The command palette
(Ctrl+P) fuzzy-finds the same actions if you’d rather
search than type.