{"id":35556567,"url":"https://github.com/gohyuhan/gitti","last_synced_at":"2026-01-31T18:19:30.043Z","repository":{"id":327226549,"uuid":"1073690115","full_name":"gohyuhan/gitti","owner":"gohyuhan","description":"A lightweight terminal UI for git operations developed in golang","archived":false,"fork":false,"pushed_at":"2026-01-25T07:21:37.000Z","size":21622,"stargazers_count":11,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-25T18:59:37.479Z","etag":null,"topics":["git","golang","terminal","tui"],"latest_commit_sha":null,"homepage":"https://gitti.yuhangoh.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gohyuhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-10T13:29:14.000Z","updated_at":"2026-01-25T05:51:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gohyuhan/gitti","commit_stats":null,"previous_names":["gohyuhan/gitti"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/gohyuhan/gitti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gohyuhan%2Fgitti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gohyuhan%2Fgitti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gohyuhan%2Fgitti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gohyuhan%2Fgitti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gohyuhan","download_url":"https://codeload.github.com/gohyuhan/gitti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gohyuhan%2Fgitti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28949282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","golang","terminal","tui"],"created_at":"2026-01-04T09:12:25.397Z","updated_at":"2026-01-31T18:19:30.038Z","avatar_url":"https://github.com/gohyuhan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/gitti.png\" alt=\"gitti logo\" width=\"150\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-00ADD8?style=for-the-badge\u0026logo=go\u0026logoColor=white\" alt=\"Go\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/gohyuhan/gitti?style=for-the-badge\" alt=\"Release\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/gohyuhan/gitti?style=for-the-badge\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/gohyuhan/gitti/release.yml?style=for-the-badge\u0026label=Release\" alt=\"Release\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA fast, lightweight terminal UI for Git operations that keeps you in your flow.\u003c/strong\u003e\u003cbr\u003e\n\u003c/p\u003e\n\n# Gitti\n\nA fast, lightweight terminal UI for Git operations that keeps you in your flow.\n\n![Demo](assets/demo.gif)\n\n\u003e ⚠️ **Development Status**: Gitti is actively under development. Features, APIs, and behaviors may change significantly. Development is driven by personal needs first, with additional features planned afterward. Not all majority used Git operations are currently supported.\n\n## Requirements\n\n- **Git 2.32+**\n- **xclip** or **xsel** (for linux only)\n\n## Description\n\nGitti is a visual Git client built for developers who live in the terminal. It provides an intuitive TUI (Terminal User Interface) for common Git operations without the overhead of traditional GUI applications or the verbosity of CLI commands.\n\n## Why Gitti?\n\nGitti is built for terminal-focused developers who need visual Git operations without breaking their flow. Traditional GUI clients like GitHub Desktop offer great interfaces but consume significant RAM and force context switching that disrupts your coding rhythm. Pure CLI commands are powerful but lack visual context for reviewing changes and managing branches. Born from personal need while working in Neovim, Gitti bridges this gap by bringing an intuitive, lightweight TUI directly into your terminal, no window management, no context switching, just seamless Git operations with visual clarity. Plus, it's universal with built-in support for English, Japanese, Simplified \u0026 Traditional Chinese.\n\n## Features\n\n- 🌳 **Branch Management** - View, switch, and manage branches with ease\n- 📝 **Interactive Staging** - Visually select and stage files\n- 🔍 **Diff Viewer** - Review changes with syntax-aware diff display\n- 💬 **Commit Interface** - Write commits with a dedicated UI\n- 🚀 **Push/Pull Operations** - Manage remote operations seamlessly\n- 💿 **Changes Stash Operations** - Manage stash operations seamlessly\n- 🔀 **Conflict Resolution** - Detect and resolve merge conflicts with interactive options\n- 📦 **Basic Submodule Support** - Work with Git submodules in your repositories\n- 🌍 **Multi-language Support** - English, Japanese, 简体中文, 繁體中文\n- ⚡ **Real-time Updates** - File system monitoring for instant status updates\n- ⌨️ **Keyboard-driven** - Efficient navigation without touching the mouse\n\n## Installation\n\n### Linux\n\n```bash\ncurl --proto \"=https\" -sSfL https://github.com/gohyuhan/gitti/releases/latest/download/install.sh | bash\n```\n\n### macOS (curl or homebrew)\n\n```bash\ncurl --proto \"=https\" -sSfL https://github.com/gohyuhan/gitti/releases/latest/download/install.sh | bash\n\n# via homebrew\n# Add the tap (once)\nbrew tap gohyuhan/gitti\n\n# Install latest\nbrew update \u0026\u0026 brew install gitti\n```\n\n### Windows (PowerShell or scoop)\n\n```powershell\npowershell -c \"irm https://github.com/gohyuhan/gitti/releases/latest/download/install.ps1 | iex\"\n\n# via scoop\n# Add the bucket (once)\nscoop bucket add gitti https://github.com/gohyuhan/scoop-gitti\n\n# Install latest\nscoop update; scoop install gitti\n```\n\n### Go Install\n\nIf you have Go installed, you can install Gitti directly:\n\n```bash\ngo install github.com/gohyuhan/gitti@latest\n```\n\n## Uninstall \u0026 Cleanup\n\n### macOS (Homebrew)\n\n```bash\n# 1. Uninstall + remove ALL versions\nbrew uninstall --force gitti\n\n# 2. Remove the tap\nbrew untap gohyuhan/gitti\n\n# 3. Delete the binary directly (in case it's not a symlink or brew missed it)\nrm -f /opt/homebrew/bin/gitti\nrm -f /usr/local/bin/gitti\n\n# 4. Delete the entire Cellar folder for gitti (old kegs)\nrm -rf /opt/homebrew/Cellar/gitti\nrm -rf /usr/local/Cellar/gitti\n\n# 5. Delete any leftover symlinks\nrm -rf /opt/homebrew/opt/gitti\nrm -rf /usr/local/opt/gitti\n\n# 6. Delete all cached downloads for gitti\nrm -rf ~/Library/Caches/Homebrew/gitti*\nrm -rf ~/Library/Caches/Homebrew/downloads/*gitti*\n```\n\n### Windows (Scoop)\n\n```powershell\n# 1. Uninstall the app (all versions)\nscoop uninstall gitti 2\u003e$null\n\n# 2. Remove the bucket\nscoop bucket rm gitti 2\u003e$null\n\n# 3. Delete the app folder completely (including shims + persist)\nrm -r -force \"$env:USERPROFILE\\scoop\\apps\\gitti\" 2\u003e$null\n\n# 4. Delete the bucket clone\nrm -r -force \"$env:USERPROFILE\\scoop\\buckets\\gitti\" 2\u003e$null\n\n# 5. Delete all cached installers for gitti\nscoop cache rm \"gitti*\" 2\u003e$null\n```\n\n### Manual Installation (curl / powershell)\n\n#### macOS / Linux\n\n```bash\n# Remove binary (if installed via curl)\nsudo rm -f /usr/local/bin/gitti\n```\n\n#### Windows\n\n```powershell\n# Remove binary and directory\nRemove-Item -Path \"$env:LOCALAPPDATA\\gitti\" -Recurse -Force\n```\n\n### Configuration Cleanup\n\nTo completely remove Gitti's configuration files:\n\n#### macOS\n\n```bash\nrm -rf \"$HOME/Library/Application Support/gitti\"\n```\n\n#### Linux\n\n```bash\nrm -rf \"$HOME/.config/gitti\"\n```\n\n#### Windows\n\n```powershell\nRemove-Item -Path \"$env:APPDATA\\gitti\" -Recurse -Force\n```\n\n## Quick Start\n\nLaunch Gitti in any Git repository:\n\n```bash\ngitti\n```\n\n### Configuration\n\nSet your preferred language:\n\n```bash\ngitti --language en    # English\ngitti --language ja    # Japanese\ngitti --language zh-hans  # Simplified Chinese\ngitti --language zh-hant  # Traditional Chinese\n```\n\nConfigure default branch for new repositories:\n\n```bash\n# For gitti only\ngitti --init-dbranch main\n\n# For global Git configuration that will be set to gitti and system git\ngitti --init-dbranch main --global\n```\n\n## Changelog\n\n### [v0.4.1]\n\n- hotfix: prevent deadlock in main thread by moving checking into goroutine when user navigate a list quickly which cause detail panel to constantly cancel and fetch relevant content\n\n### [v0.4.0]\n\n- feature: introduce copy and paste for input field\n- feature: add config for max count retrieval for commit logs (--max-commit-count)\n- feature: universal `--skip`\n- feature: build commit-graph goroutine function so large repo benefit from it to speed up git log retrieval\n- feature: add logging component panel and logging and log exporting feature\n- feature: reposition line staging mode into line editing in general and allow line discard\n- optimize: optimize branch,file,commit log and stash panel cursor reposition to retain selection\n\n### [v0.3.1]\n\n- fix: fix for cherry pick selection reinit after applying cherry pick git operation is executed\n\n### [v0.3.0]\n\n- fix: scrolling problem that will cause UI fix due to overscrolling by adding throttle for scrolling\n- fix: unnecessary split when the files indexstate and worktree is both “?”\n- fix: -/+ key conflict during typing mode by restricting -/+ key for left panel adjustments when in typing mode\n- feature: introduce keybinding for universal `--continue` and universal `--abort` for git operation that accept this flag. e.g, cherry pick, merge etc\n- feature: introduce individual line staging and unstaging\n- feature: introduce cherry-pick\n\n### [v0.2.1]\n\n- Address a fix for CLRF (^M) that break detail view panel UI layout\n\n### [v0.2.0]\n\n- Added a new component to display a summary list of commits with a commit branching graph\n- The details component now shows comprehensive information, including specific changes and diffs for each commit\n- Implemented Hard, Soft, and Mixed reset functionality. New keybindings: `R` (reset latest commit) and `r` (reset selected commit)\n- Added item counters to all popup lists for better visibility\n- Introduced real-time adjustment of the left panel width using the `-` and `+` keys\n- Added support for creating/pulling from remote branches and deleting local branches. New keybinding: `d` (delete local branch)\n- Implemented a split view in the detail component for staged and unstaged changes. New keybindings: `[` and `]` (navigate between panels)\n- Added an 'edit' feature to open specific files directly in the terminal or external IDE based on configuration. New keybinding: `e` (edit file)\n- New feature to pull and create branch based of a remote branch\n\n### [v0.1.3]\n\n- hotfix: irrelevant git events trigger update and add control for git fetch\n\n### [v0.1.2]\n\n- hotfix: list counter not counting\n\n### [v0.1.1]\n\n- Context-based Process Management: Refactored Git operations to use context.Context for process cancellation and termination instead of manual process killing, providing cleaner and more reliable subprocess management\n- Detail Panel Performance Optimization: Optimized the detail component panel info fetching to prevent UI blocking by implementing non-blocking async data retrieval, with additional optimizations to prevent unnecessary UI re-rendering\n- Renamed/Copied File Handling: Added proper handling for renamed files (index state \"R\") in stage, unstage, and discard operations, and improved overall handling of copied and renamed files\n- Git Stash Operations: Added output viewport and confirmation pop-ups for Git stash operations, with width adjustments for various TUI pop-ups\n- Git Conflict Resolution: Introduced Git conflict detection and resolve options with enhanced thread-safety for streaming Git output to the UI. A new Keybinding for conflict resolution is added: `r` (resolve)\n- Commit Output Control: Introduced InitialCommitStarted flag to control commit output viewport visibility and added viewport Y-offset adjustments for improved UI positioning\n\n### [v0.1.0]\n\n- Initial release in development\n- Core TUI implementation\n- Branch management and switching\n- Interactive file staging\n- Diff viewer\n- Commit, pull and push operations\n- Changes stash operation\n- Multi-language support (en, ja, zh-hans, zh-hant)\n- Real-time file system monitoring\n- Configuration management\n- Basic submodule support\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\nBuilt with:\n\n- [Bubble Tea](https://github.com/charmbracelet/bubbletea) - TUI framework\n- [Lip Gloss](https://github.com/charmbracelet/lipgloss) - Terminal styling\n- [Bubbles](https://github.com/charmbracelet/bubbles) - TUI components\n\n---\n\n**Made with ❤️ for terminal enthusiasts who refuse to break their flow**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgohyuhan%2Fgitti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgohyuhan%2Fgitti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgohyuhan%2Fgitti/lists"}