For a terminal UI for staging and committing with git, the first results are jesseduffield/lazygit (Lazygit is a full-featured terminal-based TUI for Git that provides interactive hunk staging, side-by-side diffs, commit composition, and branch management through a keyboard-driven interface, making it an ideal match for this query), jonas/tig (Tig is a mature terminal-based TUI for Git that delivers interactive hunk staging, keyboard-driven navigation, commit message editing, and comprehensive git status and branch management, making it a flagship tool for this use case) and wfxr/forgit (forgit is a shell‑based interactive Git wrapper that uses a fuzzy finder for staging, diffing, and committing, making it a terminal‑friendly interactive client even though it relies on external tools rather than a full‑screen TUI). extrawurst/gitui and magit/magit round out the shortlist. Compare the match explanations and check the project documentation against your requirements.
Interactive command-line tools for staging files, managing commits, and navigating git repositories efficiently.
Lazygit is a terminal-based user interface designed to simplify version control operations through a keyboard-driven workflow. It functions as a visual abstraction layer that bridges native commands with an interactive environment, allowing users to manage repository history, branches, and commit workflows without relying solely on manual command-line input. The tool distinguishes itself by automating complex version control tasks that typically require multiple manual steps. It provides specialized interfaces for interactive rebasing, commit history amendment, and binary search-based regress
Lazygit is a full-featured terminal-based TUI for Git that provides interactive hunk staging, side-by-side diffs, commit composition, and branch management through a keyboard-driven interface, making it an ideal match for this query.
Tig is a terminal-based interface for version control systems that functions as an interactive visual layer over standard command-line operations. It provides a text-based environment for navigating commit history, managing staging areas, and inspecting file changes directly within the terminal. By utilizing a split-view layout, the application allows users to view logs, diffs, and status information simultaneously for efficient code analysis. The tool distinguishes itself through a state-driven navigation model that processes piped output from version control utilities into structured, color
Tig is a mature terminal-based TUI for Git that delivers interactive hunk staging, keyboard-driven navigation, commit message editing, and comprehensive git status and branch management, making it a flagship tool for this use case.
forgit is a shell-based interactive CLI wrapper that uses a fuzzy finder to transform Git output into selection menus. It functions as a workflow accelerator and history browser, replacing manual command entry with searchable interfaces for version control operations. The tool provides specialized managers for Git worktrees and an interactive history browser for visualizing commit logs, reflogs, and blame data. It differentiates itself by wrapping native Git subcommands in selection logic, allowing users to pick targets before executing final operations. Its capabilities cover interactive fi
forgit is a shell‑based interactive Git wrapper that uses a fuzzy finder for staging, diffing, and committing, making it a terminal‑friendly interactive client even though it relies on external tools rather than a full‑screen TUI.
Gitui is a terminal user interface and repository manager built with Rust. It provides a keyboard-driven visual environment for performing version control operations without the need to type manual command line arguments. The application enables the management of Git branches, commits, and remote synchronization, alongside capabilities for stashing temporary work and managing submodules. It includes support for GPG commit signing to verify identity through cryptographic signatures. Users can customize the experience through keyboard shortcut rebinding and visual theme adjustments. The interf
Gitui is a full-featured terminal-based Git client with interactive hunk staging, a diff view, commit message editor, and keyboard-driven branch management — exactly the kind of tool you need for staging and committing from the console.
Magit is a complete Git interface that runs inside Emacs, providing a full-featured porcelain for version control operations without leaving the editor. It renders repository state as structured, collapsible sections within Emacs buffers, and manages Git command execution through a transactional process model with automatic buffer refresh and error handling. The interface exposes all configuration through Emacs' standard customization system and uses a transient command framework for context-sensitive menu-driven Git operations. What distinguishes Magit is its granular control over every stag
Magit is a complete Git interface, but it runs inside Emacs rather than as a standalone terminal application, so it is not the standalone TUI Git client you are looking for.
This is a Vim extension that provides Git change visualization and hunk management. It displays markers in the sign column to indicate added, modified, or removed lines relative to the Git index, allowing users to visualize diffs and compare buffer versions side-by-side. The plugin extends the editor's text objects to target specific blocks of modified lines, enabling the use of standard operators on these contiguous hunks. It also provides tools to stage or undo individual blocks of changes directly within the editor. Additional capabilities include navigation utilities for jumping between
Vim-gitgutter is a Vim plugin that adds Git hunk staging and diff visualization inside the editor, but it's not a standalone terminal-based Git client — it extends an existing TUI editor rather than being a dedicated interactive tool for staging and committing.
Pure is an asynchronous command line prompt for Zsh designed to maintain terminal responsiveness while providing real-time system and environment information. It functions as a minimal, themeable interface component that reconstructs its visual state by evaluating shell variables and environment context before every new line. The project distinguishes itself by offloading complex tasks, such as version control status checks and system monitoring, to background processes. This architecture ensures that the terminal interface remains fluid and responsive even when performing intensive status up
It is a Zsh prompt theme that displays Git status information in the terminal, but it is not an interactive tool for staging and committing changes, which is what you are looking for.
Delta is a command-line pager that enhances the readability of terminal output by applying syntax highlighting and structured formatting to text streams. It functions as a specialized interface for version control systems, transforming standard output into color-coded, human-readable views. The tool distinguishes itself through its ability to render side-by-side diff comparisons and visualize merge conflicts with clear, semantic highlighting. It dynamically calculates column widths and text alignment to fit complex file comparisons within the constraints of a terminal window, while allowing u
Delta is a command-line pager that enhances diff readability with syntax highlighting and side-by-side views, but it is not an interactive Git TUI for staging, committing, or managing branches—it serves as a diff viewer component rather than a full staging-and-committing client.
Gitsigns.nvim is a Neovim plugin that integrates Git diff visualization, blame annotations, and hunk-based staging directly into the editor buffer. It renders add, modify, and delete indicators in the sign column for tracked files, and provides inline or popup blame annotations showing commit authorship and date for each line. The plugin operates on individual diff hunks as atomic units for staging, reverting, and navigation, all executed asynchronously via Neovim's job control API to avoid blocking the UI. The plugin distinguishes itself by enabling hunk-level staging and resetting directly
Gitsigns.nvim is a Neovim plugin that adds in-editor hunk staging and diff annotations, not a standalone terminal-based interactive Git client like the TUI tool you're looking for.
This project is a pure Go implementation of the Git version control system, providing a library for integrating versioning and history analysis into applications. It functions as a complete repository manager and object store that does not require external binary dependencies. The implementation utilizes interface-based storage, allowing repositories to be managed on disk or entirely in memory. It supports a transactional storage model to ensure atomic operations and implements a content-addressable storage system using delta-compression packfiles. The library covers a broad range of version
This is a pure-Go Git library for integrating version control into applications, not a terminal-based interactive client — it provides the underlying plumbing but does not offer a TUI for staging and committing.
SourceGit is a cross-platform desktop Git GUI client and version control tool compatible with Windows, macOS, and Linux. It provides a graphical user interface for cloning, merging, and analyzing code changes, acting as a visual manager for Git repositories. The application includes an AI-powered commit generator to draft standardized commit messages and a pull request manager to initiate and manage merges across supported hosting services via web APIs. The software covers broad version control capabilities, including advanced operations such as interactive rebasing, cherry-picking, and subm
SourceGit is a desktop GUI client for Git, not a terminal-based (TUI) tool — it provides interactive staging and commit features but through a graphical window rather than the console interface this search is asking for.
diff2html is a Git diff visualization library that transforms unified diff text into structured HTML. It serves as a renderer for visualizing code changes in web browsers, providing components to inject stylized diff visualizations and collapsible file lists directly into web page elements. The library enables both side-by-side and line-by-line code comparisons. It includes a syntax highlighting diff viewer that applies language-specific color coding to source code based on file extensions or manual mappings. To maintain alignment during reviews, the project implements synchronized scrolling
diff2html is a library that renders unified diffs to HTML for web browsers, not a terminal-based interactive Git client for staging and committing, so it falls outside the intended category of console TUI tools.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| jesseduffield/lazygit | 79.3K | Go | MIT | |
| jonas/tig | 13.3K | C | GPL-2.0 | |
| wfxr/forgit |
| 5K |
| Shell |
| MIT |
| extrawurst/gitui | 22.1K | Rust | MIT |
| magit/magit | 7.1K | Emacs Lisp | GPL-3.0 |
| airblade/vim-gitgutter | 8.5K | Vim Script | MIT |
| sindresorhus/pure | 14.1K | Shell | mit |
| dandavison/delta | 31.1K | Rust | MIT |
| lewis6991/gitsigns.nvim | 6.6K | Lua | mit |
| go-git/go-git | 7.2K | Go | apache-2.0 |