mirror of
https://github.com/parenworks/gilt.git
synced 2026-05-22 19:31:30 +00:00
LazyGit-inspired TUI for Git written in Common Lisp
- Use explicit /dev/tty fd for all terminal ops instead of sb-sys:*stdin* - Defer all terminal state to runtime initialization - Multi-arch CI builds (linux-x86_64, darwin-arm64, darwin-x86_64) - Bump version to 0.17.0 |
||
|---|---|---|
| .github/workflows | ||
| images | ||
| src | ||
| tests | ||
| .gitignore | ||
| build.lisp | ||
| CHANGELOG.md | ||
| diagnose.lisp | ||
| gilt-0.1.0.tar.gz | ||
| gilt.asd | ||
| GUIDE.md | ||
| Makefile | ||
| README.md | ||
| ROADMAP.md | ||
Gilt
Git Interface for Lisp Terminal
A LazyGit-style Git TUI written in Common Lisp.
Screenshots
Main View
Diff View
Features
- Pure ANSI rendering - No ncurses dependency, direct terminal control
- LazyGit-inspired UI - Familiar 5-panel layout with colored output
- Full color diffs - 256-color support with syntax highlighting
- Fast and responsive - Lightweight terminal interface
- CLOS architecture - Clean, extensible object-oriented design
- Comprehensive Git operations - Stage, commit, push, pull, merge, rebase, cherry-pick, and more
- Interactive rebase - Full rebase UI with pick, reword, squash, fixup, drop, and reorder
- Bisect - Binary search for bad commits with
b:badg:goodQ:reset - Git blame view - View file blame with commit info
- Commit search - Filter commits by message or author
- Tag support - Create, delete, push, and view tags
- Remote management - Add, rename remotes; delete remote branches; fetch
- Submodule support - View and update submodules
- Worktree management - View, add, and remove working directories
- Stash management - List, apply, pop, drop, and rename stashes
- Config viewer - Browse git config (local/global/system)
- Git-flow integration - Feature, release, and hotfix workflows
- Merge conflict resolution - Resolve with ours/theirs/edit, abort merge
- Force push - Push with
--force-with-leaseoption - Context-sensitive hints - Help bar updates based on active panel and view
- Custom keybindings - Define shell commands in
~/.config/gilt/commands.conf - Status bar - Branch tracking info and operation status
- Cross-platform Unix support - Works on NixOS, standard Linux, macOS, WSL2
Requirements
- SBCL (Steel Bank Common Lisp)
- Quicklisp
- Git
Installation
Build Standalone Executable
make build
This creates a gilt executable you can run directly:
./gilt
Install System-Wide
sudo make install
Then run from anywhere:
gilt
Quick Start
- Navigate to a Git repository
- Run
./gilt(orgiltif installed) - Use
j/kto navigate,Tabto switch panels - Press
Spaceto stage files,cto commit - Press
qto quit
Documentation
See GUIDE.md for the complete user guide including:
- Screen layout and panel descriptions
- All keybindings
- Common workflows (staging, committing, merging, squashing, etc.)
- New features: blame view, commit search, tags, remotes, submodules, worktrees, config viewer
- Troubleshooting tips
See CHANGELOG.md for version history.
Architecture
| File | Description |
|---|---|
ansi.lisp |
ANSI escape sequence library |
terminal.lisp |
Raw terminal input handling |
ui.lisp |
Panel and dialog drawing |
git.lisp |
Git command interface |
views.lisp |
Main UI views |
main.lisp |
Application entry point |
Makefile Targets
| Target | Description |
|---|---|
build |
Build standalone executable |
install |
Install to /usr/local/bin |
uninstall |
Remove from /usr/local/bin |
clean |
Remove build artifacts |
run |
Run from source |
License
MIT

