Apps

Git

# Deft Git Client A Magit-style two-pane git client: status list (top) + diff/log view (bottom). Stage, unstage, commit, pull, push, and browse history. ## Key Bindings ### Tab Bar | Key | Action | |-----|--------| | `Ctrl+Page Down` | Cycle focus Projects → Changes → Log → Stashes | | `Ctrl+Page Up` | Cycle focus in reverse (Projects → Stashes → Log → Changes) | ### Status Pane | Key | Action | |-----|--------| | `Up` / `Down` | Move cursor | | `j` / `k` | Move cursor (vim-style) | | `Enter` | Stage or unstage item under cursor | | `Ctrl+Page Down` | Switch to the next tab (diff/log view) | | `s` | Stage file under cursor | | `u` | Unstage file under cursor | | `Ctrl+Space` | Mark/unmark file under cursor (marked rows show `*`) | | `R` | Revert file under cursor | | `I` | Append file to `.gitignore` | | `S` | Stage all files | | `U` | Unstage all files | | `c` | Enter commit message input | | `z` | Stash changes (optional message) | | `l` | Switch to log view | | `F` | Git pull | | `P` | Git push | | `Ctrl+P` | Force push (`--force-with-lease`) | | `g` / `r` | Refresh status | | `q` | Quit/back to status | While any files are marked, `s`, `u`, `R`, `I`, `D` and the "Remove from Repo" menu actions apply to every marked file instead of the file under the cursor. `Ctrl+Space` advances the cursor so consecutive files can be marked quickly. ### Diff Pane | Key | Action | |-----|--------| | `Up` / `Down` | Scroll diff | | `Page Up` / `Page Down` | Fast scroll | | `Ctrl+Page Up` / `Escape` | Back to the previous tab (status pane) | ### Log View | Key | Action | |-----|--------| | `Up` / `Down` / `j` / `k` | Move through commits (diff pane shows commit details) | | `q` / `Escape` | Back to status view | ### Stashes Tab | Key | Action | |-----|--------| | `z` | Stash current changes (prompts for an optional message) | | `a` | Apply stash under cursor | | `p` | Pop stash under cursor | | `d` | Drop stash under cursor | | `Enter` | Apply stash under cursor | `z` opens the input bar; press `Enter` with an empty message to stash without a label. ### Commit Input Mode | Key | Action | |-----|--------| | `Enter` | Confirm commit | | `Escape` | Cancel commit | | `Up` / `Down` | Recall older / newer commit messages (cycled from history) | | `Backspace` | Delete character before cursor | | `Delete` | Delete character after cursor | | `Left` / `Right` | Move cursor | | `Home` / `End` | Cursor to start/end | ### Commit Message History Submitted commit/amend messages are persisted to `.deft/local/git/commit-history.dft` (newest last, duplicates collapsed, capped at 50). While the commit input is open, `Up` recalls older messages and `Down` walks back toward the draft you were typing. ## Pie Menu Hold the pie trigger (Super by default; `[config/set "ui/pie-trigger" :f1]` to change it) with the git panel focused, hover the hub to descend, then release on a slice. Accelerators mirror the changes-pane keys: | Dir | Slice | Key | |-----|-------|-----| | N | Commit | `c` | | NE | Amend | `a` | | E | Push | `P` | | SE | Pull | `F` | | S | Unstage All | `U` | | SW | Unstage | `u` | | W | Stage | `s` | | NW | Stage All | `S` | Stage/Unstage act on the file under the changes cursor; Stage All / Unstage All apply to every file. Refresh, branch and remote commands stay on the app menu bar and Ctrl+B.