Tig
Tig est une interface text-mode basée sur ncurses pour Git. Il fonctionne principalement comme un navigateur de dépôt Git.
Quand l'utiliser
- Navigation dans l'historique Git via le terminal : Parcourir rapidement les graphes de commits, branches et tags dans des environnements serveur sans interface graphique.
- Staging interactif et commits par chunks : Examiner les diffs, mettre en scène des hunks et annuler des lignes non indexées sans quitter le terminal.
- Blame et annotation de code : Inspecter les auteurs, horodatages et journaux de commits par ligne de code (
tig blame). - Audit Git léger : Auditer de grands dépôts Git d'entreprise via des connexions SSH sans latence graphique.
Démarrage rapide
1. Invocations courantes
# Ouvrir le graphe de commits de la branche principale
tig
# Voir l'historique d'un fichier spécifique
tig chemin/vers/fichier.ts
# Voir le diff des modifications non indexées (vue Statut)
tig status
# Vue blame interactive
tig blame chemin/vers/fichier.ts
2. Touches de navigation essentielles
m: Passer à la vue Principale (graphe de commits)s: Passer à la vue Statut (staging)d: Voir le diff du commit sélectionnéb: Vue blameu: Mettre en scène / annuler la mise en scène d'un fichier ou d'un hunk de diffq: Fermer la vue active / Quitter
Concepts fondamentaux
Configuration Tig de production (~/.tigrc)
Personnaliser les couleurs, les raccourcis clavier et les dispositions des vues :
# ~/.tigrc
# Paramètres généraux
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
# Raccourcis clavier : Navigation Vim
bind generic j move-down
bind generic k move-up
bind generic g move-first-line
bind generic G move-last-line
bind generic <Ctrl-f> page-down
bind generic <Ctrl-b> page-up
# Actions rapides
bind main <Enter> view-diff
bind status u stage-update
bind status s stage-update
bind status c !git commit -v
Vue de staging interactif et staging par hunks
Naviguer dans la vue Statut pour examiner et mettre en scène des modifications :
# Ouvrir Tig directement en mode statut
tig status
# Touches dans la vue Statut :
# - Appuyez sur 'u' pour mettre en scène/annuler la mise en scène d'un fichier ou d'un hunk
# - Appuyez sur 'Entrée' pour ouvrir la vue diff du fichier sélectionné
# - Appuyez sur '1' pour mettre en scène une ligne individuelle
# - Appuyez sur 'c' pour ouvrir l'éditeur et créer un commit
Enquêter sur les régressions avec tig blame
Tracer les modifications de lignes dans l'historique du dépôt :
# Lancer la vue blame interactive pour un fichier spécifique
tig blame src/auth/jwt_validator.go
# Navigation dans la vue Blame :
# - Appuyez sur 'Entrée' sur une ligne pour voir le diff complet du commit qui l'a introduite
# - Appuyez sur ',' pour blâmer le commit parent avant ce changement
# - Appuyez sur 'q' pour revenir à la vue précédente
Modèles courants
#Raccourcis clavier Tig personnalisés (~/.tigrc)
Problème : Staging rapide, rebasage et changement de branche dans le terminal.
Solution : Définir des raccourcis personnalisés dans ~/.tigrc.
# ~/.tigrc
# Lier 'F' pour fetch depuis origin
bind generic F !git fetch origin
# Lier 'C' dans la vue statut pour un commit rapide
bind status C !git commit -v
# Lier 'P' pour pousser la branche courante
bind generic P !git push origin HEAD
Meilleures pratiques (2026)
- Faites configurer
main-viewdans~/.tigrcaveccommit-title:graph=yes,refs=yespour afficher des hiérarchies de branches claires. - Faites utiliser
tig blamepour découvrir rapidement quelle PR ou quel commit a introduit une ligne de code défaillante. - Faites utiliser
tig statuspour examiner et mettre en scène des hunks de lignes individuelles (1) pour des commits Git granulaires et propres. - Faites remapper les touches de navigation par défaut vers
j/kdans.tigrcsi vous êtes habitué aux raccourcis Vim. - Ne faites pas laisser les conflits de fusion non résolus ouverts dans Tig ; utilisez Tig pour voir l'état du conflit et résoudre dans votre éditeur.
- Ne faites pas exécuter des vues Tig d'historique complet lourdes sur des dépôts multi-gigaoctets sans spécifier de limite de branche ou de chemin.
- N'oubliez pas d'appuyer sur
qpour remonter dans la hiérarchie des vues sans tuer la session.
Dépannage
| Erreur / Symptôme | Cause | Solution |
|---|---|---|
| Couleurs difficiles à lire dans le terminal | Contraste de thème du terminal en conflit avec la palette Tig par défaut | Configurer des couleurs personnalisées dans ~/.tigrc (ex. color diff-stat green default). |
| Tig s'ouvre dans la mauvaise racine du dépôt Git | Le répertoire de travail courant se trouve dans un sous-module ou en dehors du dépôt | Vérifier git rev-parse --show-toplevel avant d'invoquer tig. |
cannot open file: ... dans la vue blame | Le fichier a été renommé ou supprimé dans l'arbre de travail | Passer explicitement la référence du commit : tig blame HEAD~2 -- chemin/vers/fichier. |