lazygit : toutes les opérations git dans une interface terminal

Il y a les opérations git qu’on fait en aveugle (git add, git commit, git push), et celles qu’on évite parce que la commande est trop complexe ou trop risquée à taper sans filet. lazygit rend toutes ces opérations accessibles depuis une interface visuelle dans le terminal.

Ce que fait lazygit

lazygit est une interface TUI (Terminal User Interface) pour git. Cinq panneaux affichent en permanence l’état de votre dépôt : fichiers modifiés, branches, commits, stash, logs. Chaque opération est une touche de clavier.

lazygit

C’est tout. L’interface s’ouvre et vous voyez immédiatement l’état complet de votre repo.

Installation

# macOS
brew install jesseduffield/lazygit/lazygit

# Linux (Debian/Ubuntu)
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep '"tag_name"' | sed 's/.*"v\([^"]*\)".*/\1/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit /usr/local/bin

# Windows (Scoop)
scoop install lazygit

L’interface est divisée en 5 panneaux navigables avec les flèches :

  • Files — fichiers modifiés et stagés
  • Branches — branches locales et remote
  • Commits — historique avec diff inline
  • Stash — liste des stash
  • Status — vue globale du repo

Les raccourcis essentiels :

ToucheAction
SpaceStage / unstage un fichier
aStage tous les fichiers
cCommit
pPush
PPull
bNouveau branch
?Aide contextuelle

Opérations avancées en quelques touches

Rebase interactif :

Dans le panneau Commits, e ouvre le rebase interactif. Vous réorganisez les commits avec ctrl+j / ctrl+k, squashez avec s, renommez avec r. Tout ce que git rebase -i fait, sans mémoriser la syntaxe.

Cherry-pick :

c dans le panneau Commits copie un commit, v le colle sur la branche courante. Multi-sélection avec Space.

Diff de fichier :

Dans le panneau Files, Entrée ouvre le diff du fichier. Vous pouvez stager des lignes individuelles ou des hunks avec Space — l’équivalent de git add -p mais visuel.

Résolution de conflits :

lazygit détecte les fichiers en conflit et propose une interface de résolution avec les trois versions (base, ours, theirs) côte à côte.

Alias recommandé

# Dans votre .bashrc / .zshrc
alias lg='lazygit'

Intégration dans Neovim

-- Ouvrir lazygit dans un terminal flottant
vim.keymap.set('n', '<leader>lg', '<cmd>terminal lazygit<cr>')

+ Les points forts

  • Discoverability? affiche l’aide contextuelle dans chaque panneau. Vous découvrez des fonctionnalités git que vous ne saviez pas qu’elles existaient
  • Stage partiel — stager des lignes individuelles est trivial, là où git add -p est fastidieux
  • Rebase interactif accessible — l’opération la plus utile et la plus redoutée de git devient intuitive
  • Vue unifiée — fichiers, branches, commits, stash — tout en un seul coup d’œil
  • Rapide — écrit en Go, démarre instantanément

- Les points faibles

  • Courbe d’apprentissage des raccourcis — il y a beaucoup de touches à apprendre. Les premières sessions sont plus lentes que la ligne de commande
  • Difficile à scripter — lazygit est interactif par nature. Pour l’automatisation, la ligne de commande reste nécessaire
  • Peut masquer la compréhension de git — quelqu’un qui apprend git uniquement via lazygit peut ne pas comprendre ce qui se passe réellement
  • Pas adapté aux SSH sans TTY — l’interface TUI ne fonctionne pas bien dans certains contextes de connexions distantes

En résumé

lazygit rend accessibles des opérations git que beaucoup évitent par peur de la commande — rebase interactif, cherry-pick, stage partiel. C’est un outil de productivité sérieux, pas une rustine pour ceux qui ne connaissent pas git.


Voir aussi :

  • git worktree — travailler sur plusieurs branches sans stash
  • delta — améliorer l’affichage des diffs dans le terminal