Git protip : un log graphique qui déboîte
Par Maxime Bréhin • Publié le 29 août 2022
• 2 min
Le log, c’est cet outil Git qui nous affiche l’historique des commits. On en a généralement besoin pour :
- afficher les derniers commits créés, histoire de savoir où on en est dans notre travail ;
- visualiser les branches en cours et leurs évolutions respectives.
Le souci, c’est que le log « classique », ça ressemble à ça :
Ça affiche les commits du plus récent (en haut) au plus ancien (en bas), sans indication de branche, avec tout le détail du commit :
- identifiant complet sur 40 caractères,
- message complet (potentiellement sur plusieurs lignes),
- date et nom du responsable du commit,
- et des sauts de lignes histoire d’aérer tout ça.
Autant dire que ça n’est pas ultra efficace. Résultat, bien des gens se tournent par dépit vers des interfaces graphiques (on multiplie les outils). Git propose pourtant tout un tas d’options pour personnaliser l’affichage. Je te passe le détail de ces options ici pour m’intéresser à notre alias magique 🧙♂️ !
Avant ça, posons les informations et le format qu’on aimerait avoir pour faciliter notre lecture :
- Concision : première ligne du message du commit, qui l’a produit et quand, identifiant abrégé (pour faciliter son ré-emploi avec d’autres commandes) ;
- Visuel : enchaînement graphique clair des commits, visualisation des branches, des tags, de notre position actuelle (HEAD).
On peut obtenir cet affichage du log avec les options suivantes :
git log --abbrev-commit --graph --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ar)%Creset'
Bon, clairement, tu ne voudras pas taper ça à chaque fois, donc autant en faire un alias. Je l’ai nommé lg
, facile à taper et proche de log
. Pour l’enregistrer tu n’as qu’à copier/coller la ligne qui suit dans ton terminal :
git config --global alias.lg "log --graph --abbrev-commit --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'"
Le rendu est nettement plus agréable et efficace. Les options restent disponibles. On peut ainsi étendre la visualisation aux branches par exemple en faisant un git lg --branches
(en prenant le même historique que pour l’exemple en début d’article).
Si tu veux tout savoir sur le log, regarde cet autre article 👀.