# Git Integration
Tuim includes a built-in Git changes panel in the workspace sidebar. It lets you review diffs, stage and unstage files, and compose commits without leaving your keyboard or opening an external tool.
---
## 1. Opening the Git Panel
* From the sidebar: Click `< Workspace` and select **Git** (or press Enter on Git in the sidebar).
* From Command Palette: Press F1 → **Git**.
The Git panel displays all modified, added, deleted, and untracked files in your repository, grouped by staged and unstaged state.
---
## 2. Navigating Changes
| Action | Shortcut |
| :--- | :--- |
| **Move up / down** | ↑ / ↓ or j / k |
| **Jump to first / last change** | Home / End |
| **Open changed file** | Enter (opens the file in the editor) |
| **Stage / Unstage toggle** | Space |
| **Explicitly Stage file** | s or + |
| **Explicitly Unstage file** | u or - |
| **Return to Workspace** | Esc |
---
## 3. Staging and Committing
1. **Open File**:
Highlight any changed file and press Enter. Tuim opens the file directly in the active editor buffer so you can review or edit it.
2. **Stage Your Changes**:
Press Space on the files you want to include in the commit. The file moves into the "Staged Changes" list. (You can also press s/+ to stage and u/- to unstage).
3. **Compose Commit**:
Press c. Tuim presents an inline commit message prompt:
```
Commit message: [feat: add dark theme support ]
(Enter to commit, Esc to cancel)
```
4. **Finalize**:
Press Enter to execute `git commit`. Tuim updates the working tree status immediately.
Press Esc to discard the message prompt without committing.
---
## 4. Background Refresh & Non-Blocking Updates
Git status monitoring in Tuim is powered by Tuim's background task runner (`src/task_runner.zig`):
* Background status checks and diff computations run asynchronously on bounded worker threads, ensuring the UI and editor remain 100% fluid.
* Interactive mutations (staging, unstaging, and committing) execute directly and immediately trigger a status refresh.
* Generation counters ensure that slow or stale Git status completions are automatically discarded if your working tree state has changed in the meantime.
---
## Next Steps
Learn how to manage plugins and browse the marketplace in **[Extensions & Plugins](Extensions-and-Plugins.md)**.