# jonas/tig

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/jonas-tig).**

13,258 stars · 648 forks · C · GPL-2.0

## Links

- GitHub: https://github.com/jonas/tig
- Homepage: https://jonas.github.io/tig/
- awesome-repositories: https://awesome-repositories.com/repository/jonas-tig.md

## Topics

`c` `git` `ncurses` `tui`

## Description

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.

## Tags

### Development Tools & Productivity

- [Terminal-Based Version Control Interfaces](https://awesome-repositories.com/f/development-tools-productivity/developer-utilities-libraries/developer-tools/version-control-ecosystems/terminal-based-version-control-interfaces.md) — Provides an interactive terminal-based interface for managing staging areas, resolving merge conflicts, and executing commit operations.
- [Git Repository Explorers](https://awesome-repositories.com/f/development-tools-productivity/file-explorers/git-repository-explorers.md) — Enables interactive navigation of commit logs, file trees, and branch references directly within the terminal.
- [Repository View Filters](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/repository-view-filters.md) — Enables navigation through commit logs, file trees, and branch references using a text-based interface. ([source](https://jonas.github.io/tig/doc/manual.html))
- [Interactive Staging Interfaces](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/working-directory-controllers/interactive-staging-interfaces.md) — Provides an interactive interface for staging changes at the file or chunk level and resolving merge conflicts. ([source](https://jonas.github.io/tig/doc/manual.html))
- [Change Review Interfaces](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/code-analysis-tools/local-change-reviewers/change-review-interfaces.md) — Facilitates code analysis by inspecting file differences, blame annotations, and historical modifications.
- [Split-View Git Interfaces](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/git-utilities/git-log-visualizers/split-view-git-interfaces.md) — Utilizes a split-view layout to display logs, diffs, and status information simultaneously for efficient code analysis.
- [Commit History Analysis](https://awesome-repositories.com/f/development-tools-productivity/commit-history-analysis.md) — Restricts displayed commit history by file paths, date ranges, or revision ranges. ([source](https://jonas.github.io/tig/doc/manual.html))
- [Subprocess Execution](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/cli-tooling/server-cli/subprocess-execution.md) — Spawns and manages child processes to execute version control commands and capture their output.
- [Development Workflow Automators](https://awesome-repositories.com/f/development-tools-productivity/development-workflow-automators.md) — Provides a terminal-based interface for defining and executing custom shell commands to automate repository workflows.

### Artificial Intelligence & ML

- [Repository Browsers](https://awesome-repositories.com/f/artificial-intelligence-ml/artificial-intelligence-tooling/repository-browsers.md) — Offers a text-based interface for navigating commit history and inspecting file changes within the terminal.

### Operating Systems & Systems Programming

- [Terminal Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-interface-systems/terminal-interfaces.md) — Provides an interactive, text-based user interface within the terminal using low-level character libraries.
- [Keyboard Shortcut Mappings](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-interface-systems/terminal-emulation/configuration-workflow-tools/keyboard-shortcut-mappings.md) — Maps custom shell commands and interface preferences to keyboard shortcuts for efficient repository management.
- [Syntax Highlighters](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-management/output-enhancement-utilities/syntax-highlighters.md) — Applies syntax highlighting and color formatting to piped command output for improved readability. ([source](https://jonas.github.io/tig/doc/manual.html))

### System Administration & Monitoring

- [Repository Inspection](https://awesome-repositories.com/f/system-administration-monitoring/repository-inspection.md) — Displays differences, file contents, and blame annotations to track modifications within a repository. ([source](https://jonas.github.io/tig/doc/manual.html))

### User Interface & Experience

- [Split-View Controllers](https://awesome-repositories.com/f/user-interface-experience/split-containers/split-view-controllers.md) — Supports flexible split-view layouts for simultaneous viewing of logs, diffs, and status information. ([source](https://jonas.github.io/tig/doc/manual.html))
- [Dynamic Layout Engines](https://awesome-repositories.com/f/user-interface-experience/dynamic-layout-engines.md) — Arranges information panels into dynamic split-screen layouts based on terminal dimensions.
- [Terminal Interface Configurations](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/terminal-interface-configurations.md) — Allows customization of terminal interface settings via environment variables and configuration files. ([source](https://jonas.github.io/tig/doc/manual.html))

### Software Engineering & Architecture

- [Custom Command Managers](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/domain-specific-configurations/custom-command-managers.md) — Allows users to define and execute custom shell commands that leverage the current repository state. ([source](https://jonas.github.io/tig/doc/manual.html))

### Business & Productivity Software

- [View Management](https://awesome-repositories.com/f/business-productivity-software/view-management.md) — Manages navigation between specialized data views using a state-driven model.

### DevOps & Infrastructure

- [External Command Executors](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/external-command-executors.md) — Executes custom scripts using context-aware variables like commit IDs or file paths. ([source](https://jonas.github.io/tig/doc/manual.html))
