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 regression analysis. By leveraging the internal reflog, it also enables users to undo or redo recent actions, providing a safety net for repository state changes. Beyond core version control, the application offers extensive support for managing branching models, worktrees, and custom shell integrations. Users can stage individual lines of code, visualize commit graphs, and define custom commands to automate repetitive tasks. The interface is built to be highly navigable, featuring text-based filtering, customizable keybindings, and persistent directory management to streamline daily development cycles.
Lazygit is a comprehensive terminal-based Git client that provides an interactive dashboard for staging files, managing branches, viewing diffs, and editing commits, perfectly matching all the requested features.
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 interface provides tools for staging specific file changes, browsing commit histories, and aligning local states with remote servers.
Gitui is a comprehensive terminal-based Git client that provides an interactive dashboard for staging files, managing branches, viewing diffs, and editing commits, fulfilling all the requirements for a keyboard-driven version control interface.
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, colorized information panels. Users can extend the interface by defining custom shell commands that leverage the current repository state, such as specific commit identifiers or file paths, to automate repetitive development workflows. This configuration-driven approach allows for the mapping of user-defined actions to keyboard shortcuts and interface preferences. Beyond basic navigation, the application supports comprehensive repository management, including the ability to stage or unstage changes at the file or chunk level and resolve merge conflicts. It includes robust filtering capabilities for commit logs, branches, and tags, enabling users to isolate specific revisions or timeframes. The interface is highly customizable, with settings managed through environment variables and external configuration files to suit individual terminal environments.
Tig is a comprehensive terminal-based Git interface that provides all the requested features, including interactive staging, a built-in diff viewer, and a dashboard for managing branches and commits.
GitUI is a terminal-based interface for managing Git repositories, providing an interactive environment for executing version control operations, inspecting commit logs, and navigating file hierarchies. It functions as a keyboard-driven client that allows users to stage changes, manage branches, and review project history directly from the command line. The application distinguishes itself through a focus on interface responsiveness and user-defined workflows. It utilizes background thread offloading and asynchronous data caching to maintain performance during complex operations, while offering extensive customization for keyboard shortcuts, visual themes, and syntax highlighting. The interface updates automatically in response to file system changes, ensuring that the displayed repository state remains current. Beyond core repository management, the tool supports advanced version control tasks including commit signing via GPG and SSH, as well as the execution of pre-commit and pre-push hooks. It provides diagnostic utilities for performance monitoring and logging to assist in troubleshooting. The software is designed for cross-platform use, rendering its visual components through direct terminal escape sequences.
GitUI is a high-performance, keyboard-driven terminal interface that provides all the requested features, including interactive staging, a built-in diff viewer, and comprehensive branch and commit management.
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 stage of the version control workflow. Users can select individual diff hunks or lines for staging and unstaging directly within Emacs buffers, compose commit messages using pre-filled templates with guidelines, and create branches from any existing commit, tag, or reference rather than only the current HEAD. The interface supports line-by-line file blame annotation, side-by-side revision comparison via Ediff, and commit range bisection for debugging. Destructive operations require explicit user confirmation to prevent accidental data loss. The tool covers the full spectrum of Git operations including branch management, merging, rebasing, cherry-picking, and remote repository operations such as cloning, fetching, pulling, and pushing. It provides interactive history browsing with commit log viewing, file history inspection, and arbitrary revision diffing. Conflict resolution presents conflicting file sections side by side for choosing or editing the final version. Additional capabilities include Git bundle creation, patch application, per-branch Git variable configuration, and Git configuration editing from within Emacs. Documentation and configuration are accessible through Emacs' built-in help and customization systems, with all options exposed through the standard Emacs customization interface.
Magit is a comprehensive Git interface that provides a powerful TUI-like experience for staging, committing, and branch management, though it functions as an integrated environment within Emacs rather than a standalone terminal application.
diffview.nvim is a Git diff tool for Neovim that provides a dedicated interface for visualizing and managing differences across files and revisions. It functions as a revision browser and history tracker, allowing users to compare the working tree or index against specific Git tags, branches, or commits. The project includes specialized utilities for managing the Git index, such as a stage manager for staging specific diff hunks directly from a buffer. It also features a multi-way diff layout for resolving merge conflicts by comparing target and source branches during merges or rebases. Beyond basic diffing, the tool covers file history tracing and version restoration, enabling users to list commits for specific paths and revert files to previous historical states.
This is a specialized Neovim plugin for visualizing diffs and managing hunks within an editor, rather than a standalone terminal-based Git client that provides a full TUI dashboard for branch management and commits.
Neogit is a visual Git version control client designed for managing repositories through staging, committing, pushing, and merging. It provides a suite of tools for inspecting code differences, visualizing commit history via a graphical branch tree, and automating event-based workflows. The project features a workflow automation system that triggers custom logic and notifications based on repository events, such as branch creation or pushes. It also includes utilities for generating direct deep-links to commits, pull requests, and file structures on remote version control hosting providers. The interface covers change tracking and file status monitoring using filesystem events, alongside visual diff and merge tools for word-level comparisons. It supports advanced repository operations, including cherry-picking, rebasing, and stashing, through context-aware action mapping.
Neogit is a powerful terminal-based Git client built for Neovim that provides an interactive interface for staging, committing, and managing branches, though it functions as an editor plugin rather than a standalone terminal application.
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 from the buffer without requiring a separate terminal or staging tool, including partial selections in visual mode. It offers hunk navigation between changes, previews of original hunk content in floating windows, and the ability to select hunks as text objects for editing operations. Gitsigns also populates Neovim's quickfix or location lists with structured hunk data for batch review, with optional integration with the Trouble plugin for displaying hunk lists. Beyond core diff and staging capabilities, the plugin supports comparing the current buffer against any Git revision or index with optional intra-line word highlighting, and can open the current file as it existed at any specified commit in a new buffer. It integrates with fugitive revision buffers and provides buffer-local variables with counts of added, removed, and changed lines for status line display. The plugin is configured through Neovim's Lua API and is available via popular plugin managers.
This is a Neovim plugin that provides Git integration within a text editor rather than a standalone terminal-based Git client for managing repositories.