lazygit, un outil Git UI basé sur le terminal combine la simplicité de la ligne de commande et l’intuitivité d’une interface graphique pour offrir un environnement de travail rapide et cohérent
- Conçu autour de la cohérence, la découvrabilité et l’interactivité, il peut être utilisé immédiatement par les débutants qui connaissent les concepts de base de Git
- Les raccourcis clavier de style vim et une structure visuelle claire permettent une navigation rapide et réduisent les tâches répétitives
- Des opérations Git complexes comme les patchs ligne par ligne, le rebase interactif ou le cherry-pick sont simplifiées, ce qui améliore la productivité
- Basé sur un framework TUI open source écrit en Go, c’est aussi un exemple intéressant pour concevoir l’UX d’autres outils de développement
Pourquoi LazyGit est apparu
- L’auteur a découvert l’efficacité de l’outil en lançant
lazygit par hasard pendant une expérimentation avec Neovim
- Il a ensuite basculé tout son workflow Git sur
lazygit
- Auparavant, il utilisait un mélange de
git gui, gitk et de CLI, mais il a cherché une alternative à cause d’interfaces vieillissantes et d’une stabilité insuffisante
lazygit est simple, rapide et structuré de manière compatible avec la CLI, ce qui renforce sa fiabilité
Principales caractéristiques de LazyGit
Cohérence (Consistency)
- L’interface est composée de plusieurs « boîtes de vue », ce qui conserve toujours la même structure visuelle
- Lorsque l’on sélectionne une boîte à gauche, le contenu à droite change en conséquence
- Il réutilise directement la terminologie et les abstractions de Git, ce qui réduit la courbe d’apprentissage
- Par exemple, des concepts Git standard comme
bisect ou hunk peuvent être assimilés naturellement
- Il adopte des raccourcis clavier vim (
h/j/k/l, q, /, y, c, a, f, p, r, etc.), ce qui permet une manipulation rapide
- Il limite le nombre de commandes et suit la philosophie Unix du « faire une seule chose, mais bien »
Découvrabilité (Discoverability)
- Il affiche immédiatement les informations nécessaires au lancement
- dépôt actuel, branche, état du staging, commits récents, stash, dernière commande, raccourcis, etc.
- Les informations sont présentées sans surcharge visuelle afin de minimiser les changements de contexte
- Les raccourcis peuvent être consultés instantanément via le pied de page inférieur ou la touche
?
- L’utilisateur peut à tout moment comprendre intuitivement sa position et l’état actuel
Interactivité (Interactivity)
- Les opérations Git complexes sont guidées via une interface interactive
- Par exemple, lors d’un push, l’outil avertit des différences avec l’upstream, et lors d’un rebase il demande s’il doit être interactif
- Pendant les processus de rebase, résolution de conflits ou changement de branche, il effectue automatiquement des vérifications et propose les actions suivantes
- Il permet d’agir avec des combinaisons de touches sans avoir à saisir directement les commandes
pick/drop/squash
- Cela améliore la confiance de l’utilisateur et sa vitesse avec un minimum d’interruptions
Un workflow Git amélioré
lazygit n’ajoute pas un nouveau workflow : il améliore simplement l’usage des fonctions Git existantes de façon plus sûre et plus rapide
- La sélection de patchs ligne par ligne ou par hunk permet une restauration très fine du code
- Il devient possible d’annuler ou de séparer seulement une partie d’un commit
- Exemples de workflows raccourcis importants
- Modifier un commit existant puis le pousser :
2 space A P enter
- Créer un nouveau commit puis le pousser :
2 space c <titre> P
- Rebaser une branche :
3 r i ... m c
- Supprimer un commit :
4 d
- Fractionner un commit :
4 enter enter <c-p> n <titre> enter
- Cherry-pick :
3 4 C 3 4 V
- À force de répétition, les raccourcis deviennent des réflexes naturels, ce qui augmente fortement la vitesse de travail
Leçons pour l’UX des outils de développement
- La simplicité, la cohérence, la découvrabilité, les valeurs par défaut judicieuses et l’interactivité de
lazygit constituent d’excellents principes de conception pour les outils de développement
- Une forte capacité de configuration, une extensibilité et un écosystème de contributions open source y sont sainement maintenus
- Il repose sur un framework TUI écrit à 100 % en Go (
gocui), qui peut aussi servir au développement d’autres outils
- Il montre la possibilité de créer de nouveaux outils CLI/TUI appliquant des modèles UX similaires
Conclusion
lazygit est considéré non seulement comme une simple interface Git, mais aussi comme un modèle en matière de productivité des développeurs et de conception UX
- Même si les fonctions d’assistance par IA progressent, il conserve un rôle central dans le versioning, où précision et fiabilité restent essentielles
- Il continue d’évoluer grâce aux contributions et à la collaboration de la communauté open source
- Tout le monde peut l’utiliser et y contribuer, avec à la clé une expérience Git rapide et intuitive
1 commentaires
Avis Hacker News
Avant, j’aimais les TUI Git orientées clavier comme magit, neogit et lazygit
mais maintenant j’utilise jujutsu (jj) à la place de git
Après m’être habitué à la CLI de jj, j’ai commencé à utiliser jjui
J’ai souvent besoin de scinder des commits, et le plugin hunk.nvim est très utile
Pour résoudre les conflits avec jj conflict, jj-diffconflicts est ce qu’il y a de mieux
Avec jj, on peut désormais éditer le graphe des commits aussi naturellement que si on déplaçait des lignes de code
Quand on retire des hunk inutiles d’un ancien commit, cela provoque des conflits en cascade dans les commits suivants ; je me demande s’il existe un outil capable de gérer ça automatiquement
Le diff séparé par fichier est plus agréable à lire, c’est la seule raison
J’aimerais toutefois qu’il y ait davantage de GUI dédiées à jj. J’utilise gg quand je veux voir plusieurs changements d’un coup d’œil, mais il n’y a pas de diff côte à côte
En voyant des vidéos de GitButler, je me suis dit qu’une UI pour jj gagnerait à évoluer dans cette direction
Ce serait bien d’avoir une GUI permettant de déplacer des changements par glisser-déposer, ou de faire des split/rebase de façon interactive
Chaque équipe a son propre git flow, et les développeurs ont tendance à se perdre dans des micro-optimisations inutiles ou à rechigner à apprendre
Au final, on se retrouve avec une organisation où chaque équipe a besoin d’un expert git
Je préférerais un outil qui impose clairement une seule manière de faire
Ça peut faire sourire, mais parmi toutes les UI Git que j’ai utilisées, aucune n’a jamais été meilleure que SourceTree
Pour les tâches simples, c’est bien plus confortable que la CLI, et la vue d’état des fichiers et l’historique sont excellents
Il est aussi très facile d’y faire du stage/unstage au niveau des hunk ou des lignes
Dommage qu’il n’existe pas de version Linux. J’ai essayé tous les autres outils, mais je finis toujours par y revenir
Récemment, j’ai aussi testé lazygit, et parmi les TUI, c’était plutôt pas mal
Il n’y a pas de rafraîchissement automatique, donc pas de conflit avec la CLI
Documentation Git Extensions Commit
J’ai perdu un temps fou à cause de bugs innombrables et de problèmes absurdes. Franchement, il faut abandonner SourceTree
Plus j’utilise git directement, plus je ressens l’absurdité de l’interface CLI de git
Ça fait deux ans que j’utilise jj, et je ne pense plus pouvoir revenir à la CLI git
Je vois trop souvent des gens créer des problèmes parce qu’ils se perdent avec git, donc je leur conseille simplement d’utiliser autre chose
J’aime découper et commit mes changements depuis l’éditeur, mais jj manque d’intégration avec les éditeurs, donc mes commits finissent par devenir désordonnés
À cause de son nom, beaucoup l’évitent, mais GitHub Desktop est vraiment bon
Il fonctionne très bien aussi sur des dépôts autres que GitHub, et il permet facilement de modifier des commits et de faire du cherry-pick au niveau fichier ou ligne
Chaque opération complexe est accompagnée d’explications, ce qui en fait un très bon choix pour les débutants
Il manque des fonctions de merge et de graphe, mais malgré cela, je le trouve bien meilleur que la CLI git
Quand un nouveau membre arrive dans l’équipe, je lui fais toujours utiliser GH Desktop. Il fait moins d’erreurs et comprend plus vite
Pour quelqu’un qui ne maîtrise pas git, c’est le meilleur choix
En revanche, j’ai vu trop de développeurs juniors trop sûrs d’eux avec git casser des dépôts
C’est pourquoi je recommande fortement GH Desktop à mon équipe
Beaucoup d’utilisateurs de git ne connaissent pas git-absorb
Ça s’intègre bien à n’importe quel git flow et cela réduit la douleur lorsqu’il faut répartir des changements staged en correctifs sur plusieurs commits
La plupart des TUI n’ont pas ce genre de fonctionnalité
Je n’aime pas trop les outils basés sur Rust, car ils traînent trop de dépendances
J’ai perdu confiance, donc j’ai fini par arrêter de l’utiliser. Le fait que ça fonctionne de manière trop magique me gêne plutôt
Je continue à préférer tig
Il a moins de fonctionnalités, mais l’UI est simple et rapide
Je l’utilise surtout pour l’ajout incrémental à l’index
VS Code est gratuit, multiplateforme, et beaucoup de gens l’utilisent déjà
Son interface graphique Git est bien faite, et elle couvre tous les workflows classiques
En général j’utilise la CLI, mais quand le projet est déjà ouvert dans VS Code, il est souvent plus rapide et plus intuitif de passer par la GUI
La combinaison LazyVim + tmux a complètement changé ma façon d’utiliser git
J’ai configuré
ctrl-gpour ouvrir lazygit dans un volet flottant tmux depuis le répertoire courantJe peux ainsi faire mes opérations git immédiatement, sans entrer dans neovim ni changer d’interface
Dans un workflow centré sur le terminal, c’est l’expérience la plus souple et fluide
Dans
~/.tmux.conf, si on ajoute cela, on peut ouvrir la popup lazygit avecctrl-b ctrl-get la fermer avecqMoi, je fais mes opérations git avec des commandes vocales + de l’IA. Sinon, je trouve que
ctrl-rest une interface suffisantePersonne ne l’a encore mentionné, mais Gitu est aussi un client plutôt sympa