Tig
Tig ist ein ncurses-basiertes textuelles Interface für Git. Es dient hauptsächlich als Git-Repository-Browser.
Wann verwenden
- Terminalbasierte Git-Verlaufsnavigation: Schnelles Durchsuchen von Commit-Graphen, Branches und Tags in Headless-Server-Umgebungen.
- Interaktives Staging & Hunk-Commits: Überprüfen von Diffs, Stagen von Hunks und Rückgängigmachen von ungestagten Zeilen ohne das Terminal zu verlassen.
- Blame & Code-Annotation: Untersuchen von Commit-Autoren, Zeitstempeln und Commit-Logs pro Codezeile (
tig blame). - Überwachung mit geringem Overhead: Überwachung großer Unternehmens-Git-Repositorys über SSH-Verbindungen ohne GUI-Verzögerung.
Schnellstart
1. Häufige Aufrufe
# Commit-Graphen des Hauptbranches öffnen
tig
# Verlauf einer bestimmten Datei anzeigen
tig path/to/file.ts
# Diff unbestätigter Änderungen anzeigen (Statusansicht)
tig status
# Interaktive Blame-Ansicht
tig blame path/to/file.ts
2. Wichtige Navigationstasten
m: Zur Hauptansicht (Commit-Graph) wechselns: Zur Statusansicht (Staging) wechselnd: Diff des ausgewählten Commits anzeigenb: Blame-Ansichtu: Ausgewählte Datei oder Diff-Hunk stagen / entstagenq: Aktive Ansicht schließen / Beenden
Kernkonzepte
Produktive Tig-Konfiguration (~/.tigrc)
Anpassung von Farben, Tastenbelegungen und Ansichtslayouts:
# ~/.tigrc
# Allgemeine Einstellungen
set line-graphics = utf-8
set tab-size = 2
set main-view = id date:relative author:email-user commit-title:graph=yes,refs=yes
set diff-view = line-number:yes,interval=5
set status-view = line-number:yes
# Tastenbelegungen: Vim-Navigation
bind generic j move-down
bind generic k move-up
bind generic g move-first-line
bind generic G move-last-line
bind generic <Strg-f> page-down
bind generic <Strg-b> page-up
# Schnellaktionen
bind main <Enter> view-diff
bind status u stage-update
bind status s stage-update
bind status c !git commit -v
Interaktive Stage-Ansicht & Hunk-Staging
Navigieren in der Statusansicht, um Änderungen zu überprüfen und zu stagen:
# Tig direkt im Statusmodus öffnen
tig status
# Tasten in der Statusansicht:
# - Drücken Sie 'u', um eine Datei oder einen Hunk zu stagen/entstagen
# - Drücken Sie 'Enter', um die Diff-Ansicht der ausgewählten Datei zu öffnen
# - Drücken Sie '1', um eine einzelne Zeile zu stagen
# - Drücken Sie 'c', um den Editor zu öffnen und einen Commit zu erstellen
Regressionen mit tig blame untersuchen
Verfolgen von Zeilenänderungen durch die Repository-Historie:
# Interaktive Blame-Ansicht für eine bestimmte Datei starten
tig blame src/auth/jwt_validator.go
# Navigation in der Blame-Ansicht:
# - Drücken Sie 'Enter' auf einer Zeile, um den vollständigen Commit-Diff anzuzeigen, der sie eingeführt hat
# - Drücken Sie ',', um den Parent-Commit vor dieser Änderung zu blamen
# - Drücken Sie 'q', um zur vorherigen Ansicht zurückzukehren
Häufige Muster
#Benutzerdefinierte Tig-Tastenbelegungen (~/.tigrc)
Problem: Schnelles terminalbasiertes Staging, Rebasen und Branch-Checkout.
Lösung: Definieren Sie benutzerdefinierte Tastenbelegungen in ~/.tigrc.
# ~/.tigrc
# 'F' zum Abrufen (fetch) von origin binden
bind generic F !git fetch origin
# 'C' in der Statusansicht zum schnellen Commit binden
bind status C !git commit -v
# 'P' zum Pushen des aktuellen Branches binden
bind generic P !git push origin HEAD
Best Practices (2026)
- Tun: Konfigurieren Sie
main-viewin~/.tigrcmitcommit-title:graph=yes,refs=yes, um klare Branch-Hierarchien anzuzeigen. - Tun: Verwenden Sie
tig blame, um schnell herauszufinden, welcher PR oder Commit eine problematische Codezeile eingeführt hat. - Tun: Nutzen Sie
tig status, um einzelne Zeilen-Hunks (1) zu überprüfen und zu stagen, für granulare, saubere Git-Commits. - Tun: Ordnen Sie die Standard-Navigationstasten in
.tigrcaufj/kum, wenn Sie mit Vim-Tastenbelegungen vertraut sind. - Nicht: Lassen Sie ungelöste Merge-Konflikte in Tig offen; verwenden Sie Tig, um den Konfliktstatus anzuzeigen und lösen Sie ihn in Ihrem Editor.
- Nicht: Führen Sie umfangreiche vollständige Historien-Ansichten in Tig auf Multi-Gigabyte-Repositorys aus, ohne Branch- oder Pfadbegrenzungen anzugeben.
- Nicht: Vergessen Sie
qzu drücken, um in der Ansichtshierarchie aufzusteigen, ohne die Sitzung zu beenden.
Fehlerbehebung
| Fehler / Symptom | Ursache | Lösung |
|---|---|---|
| Farben im Terminal schwer lesbar | Kontrastkonflikt zwischen Terminal-Theme und Standard-Tig-Palette | Benutzerdefinierte Farben in ~/.tigrc konfigurieren (z.B. color diff-stat grün default). |
| Tig öffnet im falschen Git-Repository-Root | Aktuelles Arbeitsverzeichnis ist in einem Submodul oder außerhalb des Repos | Überprüfen Sie git rev-parse --show-toplevel vor dem Aufruf von tig. |
cannot open file: ... in Blame-Ansicht | Datei wurde im Arbeitsverzeichnis umbenannt oder gelöscht | Übergeben Sie den Commit-Ref explizit: tig blame HEAD~2 -- path/to/file. |