Siempre he sido de los que defienden la terminal a capa y espada. Lo reconozco. Para según qué cosas, no hay nada como un buen git log --graph --oneline --all --decorate para ver el histórico de un repositorio, o un git diff --word-diff para encontrar ese cambio que se te escapaba. Pero hay operaciones que se me atragantaban. Un interactive rebase de esos en los que tienes que editar a mano el TODO file, contar commits, reordenar líneas y rezar para no liarla. O un cherry-pick de varios commits entre ramas. O simplemente hacer un squash bien hecho cuando tienes quince commits de “WIP”, “fix”, “otro fix más” y “ahora sí que funciona”. Se me revolvía el estómago cada vez que alguien decía “haz un rebase interactivo”. La cuestión es que durante años asumí que era así. Que git era así. Que tenías que memorizar los flags, contar bien los commits y esperar no meter la pata. Y luego pasaba lo que pasaba: un git reset --hard mal dado, un git push --force en la rama equivocada, un rebase que dejaba el histórico hecho unos zorros.
Hasta que un día, navegando por GitHub, me topé con Lazygit. Y no, no es otra interfaz gráfica de escritorio al estilo GitKraken o Sourcetree, esas que pesan 300 MB, tardan diez segundos en abrirse y te piden cuenta premium para hacer un simple rebase. Es una TUI, una interfaz que corre dentro de tu terminal. Ligera, rápida, con todo lo que necesitas al alcance de una tecla. Y no sabes cómo me ha cambiado el día a día. ¿Para quién es? Para cualquiera que use git y quiera ser más rápido. Da igual si llevas dos semanas o quince años. ¿Para quién no es? Si eres un ninja de la CLI que se sabe todos los flags de memoria y disfruta escribiendo git rebase -i HEAD~10 a pelo, probablemente no lo necesites. Aunque quizás te acabes sorprendiendo. Pero si eres como yo, que prefieres ver las cosas gráficamente y ahorrarte los errores tontos, sigue leyendo.
¿Qué es Lazygit?
Lazygit es una interfaz de usuario en terminal (TUI) para Git. Está escrita en Go, la mantiene jesseduffield y tiene una comunidad de más de 1.000 contribuidores. Te permite gestionar repositorios Git con el teclado, viendo en tiempo real lo que pasa en cada operación. No es un “git status” bonito. Es mucho más.
La historia del proyecto es curiosa. Jesse Duffield lo creó en 2018 porque estaba harto de tener que recordar comandos de git. El README original es toda una declaración de intenciones: “I want to make git easier to use, not because I don’t know git, but because I want to be faster”. De eso han pasado ocho años, y el proyecto ha crecido hasta las 80.600 estrellas en GitHub, con releases cada mes o dos meses.
| Especificación | Valor |
|---|---|
| Versión actual | v0.63.1 (julio 2026) |
| Licencia | MIT |
| Lenguaje | Go |
| Repositorio | github.com/jesseduffield/lazygit |
| Estrellas | ~80.600 |
| Releases | Cada 1-2 meses |
| Tamaño binario | ~15 MB |
La diferencia con otras herramientas es clave. No es un IDE con plugins de git como VSCode o IntelliJ. No es un gitk, esa herramienta feísima que viene con git por defecto y que nadie usa. No es una aplicación de escritorio tipo GitKraken que consume 500 MB de RAM y tarda una eternidad en abrirse. Es una TUI que corre en tu terminal, pesa 15 MB y se maneja enteramente con el teclado.
La filosofía es clara: git para perezosos. Pero no confundas perezoso con inexperto. He visto a veteranos de Git flipar con el interactive rebase visual de Lazygit, veteranos que llevan usando git desde antes de que GitHub existiera. La herramienta no te hace menos desarrollador. Te hace más rápido.
Instalación y configuración
Lo bueno de Lazygit es que está en prácticamente todos los gestores de paquetes. No hay excusa para no probarlo.
Linux
En las distribuciones más comunes, la instalación es trivial:
# Ubuntu/Debian (desde PPA oficial) sudo add-apt-repository ppa:lazygit-team/release sudo apt update sudo apt install lazygit # Arch Linux sudo pacman -S lazygit # Fedora sudo dnf copr enable dejan/lazygit sudo dnf install lazygit # NixOS nix-shell -p lazygit
macOS
brew install lazygit
Windows
# Scoop scoop bucket add extras scoop install lazygit # Winget winget install -e --id=JesseDuffield.lazygit
Cualquier sistema con Go
go install github.com/jesseduffield/lazygit@latest
Y si prefieres el binario estático, solo tienes que descargar el tarball de releases, extraerlo y copiarlo a /usr/local/bin.
Configuración inicial
El archivo de configuración vive en ~/.config/lazygit/config.yml. Nada más arrancar Lazygit por primera vez, puedes pulsar o para abrirlo y empezar a personalizarlo. Aquí tienes un ejemplo completo con las opciones más interesantes:
Como te decía, la configuración es muy completa. Puedes cambiar el tema, los colores por autor en el grafo de commits, configurar tu editor favorito, personalizar los atajos de teclado al completo y hasta definir qué paneles laterales quieres ver y en qué orden.
Una cosa que me gusta especialmente es la opción animateExplosion. Cuando haces un nuke (reset hard de todo), la pantalla hace una animación de explosión. No es útil, pero arranca una sonrisa.
Autocompletado
Si quieres tener autocompletado para bash, zsh o fish, Lazygit incluye los scripts en su repositorio. Para zsh, por ejemplo:
mkdir -p ~/.zsh/completion curl -o ~/.zsh/completion/_lazygit https://raw.githubusercontent.com/jesseduffield/lazygit/master/scripts/completion/lazygit.zsh
El día a día con Lazygit
Una vez instalado, entras en cualquier repositorio y ejecutas lazygit. Solo eso. No necesitas configurar nada para empezar. La interfaz se divide en paneles que puedes navegar con el teclado, y en la parte inferior siempre ves los atajos disponibles para el panel en el que estás. Esto es importante: nunca te pierdes porque siempre tienes las teclas visibles.
Los paneles
Lazygit organiza todo en cinco paneles principales, accesibles con las teclas 1 a 5:
| Panel | Tecla | Qué muestra |
|---|---|---|
| Status | 1 | Info del repo, rama actual, configuración rápida |
| Files | 2 | Archivos modificados, staged/unstaged |
| Branches | 3 | Ramas locales, remotas, tags |
| Commits | 4 | Histórico de commits, reflog, stash |
| Stash | 5 | Entradas del stash |
La navegación entre paneles se hace con tab y shift+tab. Y la tecla + cambia entre modo pantalla normal, mitad y completa. Cuando tienes la pantalla completa en un panel, ves todos los detalles. Muy útil para el panel de commits cuando quieres ver el diff de cada cambio.
Staging visual
Una de las cosas que más me gustan es el staging por líneas. Seleccionas un archivo en el panel de Files, pulsas enter para ver el diff, y con space marcas líneas individuales para stage. Es como git add -p pero mucho más visual. Puedes ver exactamente qué líneas vas a incluir en el commit antes de escribirlo. Y si te equivocas, vuelves a pulsar space y deshaces el stage.
# Esto en CLI sería: git add -p archivo.py # Y te toca ir respondiendo y/n/s/e a cada bloque # Con lazygit pulsas: enter, navegas con flechas, space, space, space
Además, la tecla a hace stage de todos los archivos de golpe, y si ya están staged, los desmarca. Una tecla para todo. Así da gusto.
Commits
Para hacer un commit, pulsas c y se abre un campo de texto donde escribes el mensaje. Pero no es un campo cualquiera. Puedes usar <enter> para saltos de línea, y si necesitas más espacio, C mayúscula te abre el editor configurado. También puedes hacer amend del último commit con A, o commit sin ejecutar hooks con w (ideal cuando tienes pre-commit hooks que tardan una eternidad y quieres hacer un commit rápido).
¿Y los fixup? Desde el panel de commits puedes seleccionar un commit y pulsar F para crear un fixup! commit automático. Luego, con S aplicas todos los fixup! de golpe. Es como el autosquash de git pero sin tener que acordarte del flag.
Push, Pull y Fetch
El estado remoto se muestra visualmente. Con p haces pull, con P push, con f fetch. Y el indicador de la rama te dice si estás por delante, por detrás o divergente con respecto al remoto. Ya no tienes que hacer git status para saber si tienes cambios sin subir. Lo ves al instante.
El grafo de commits
En el panel de commits, ves el historial con un grafo a color. Cada autor tiene su color asignado. Puedes navegar con las flechas arriba y abajo, y el panel de la derecha muestra el diff del commit seleccionado. La tecla enter expande los archivos modificados, y puedes navegar por cada archivo para ver los cambios línea a línea. Es una maravilla para hacer code review rápido, mucho más cómodo que git show en la terminal.
Y si quieres comparar dos commits cualesquiera, pulsas W y seleccionas el segundo commit. Te muestra el diff entre ambos. Esto en CLI es un engorro porque tienes que apañarte con los hashes. Aquí es todo visual.
Funcionalidades avanzadas
Aquí es donde Lazygit marca la diferencia. No es solo un “git status” bonito. Es una herramienta que te permite hacer cosas que en CLI son tediosas y propensas a errores, y que te hacen decir “¿cómo he podido vivir sin esto?”.
Interactive rebase visual
El killer feature. El que me hizo quedarme. El que me hace recomendar Lazygit a todo el mundo. Seleccionas los commits que quieres modificar en el panel de commits, pulsas i y entras en modo rebase interactivo. No hay que editar ningún TODO file. No hay que contar commits. No hay que acordarse de la sintaxis pick/squash/edit. Es todo visual.
Desde ahí:
spara squash (fusionar con el commit de abajo, concatenando mensajes)fpara fixup (squash pero descartando el mensaje del commit que squaseas)dpara drop (eliminar el commit del historial)epara edit (parar el rebase y editar el commit)ppara pick (mantener el commit como está)ctrl+j/ctrl+kpara reordenar commits moviéndolos arriba y abajoFpara crear un fixup! commit automático desde el commit seleccionadoSpara aplicar todos los fixup! commits de golpe (autosquash)
Y lo mejor: mientras haces el rebase, ves los cambios en tiempo real. No es un proceso oculto. Ves cómo se mueven los commits, cómo se fusionan, cómo se eliminan. Y si algo sale mal, el menú de rebase (m) te permite continuar, abortar o saltarte el conflicto.
Imagina que tienes quince commits de “fix”, “WIP”, “cambios”, “otro cambio” y quieres dejarlos en tres commits limpios. En CLI tendrías que hacer git rebase -i HEAD~15, editar el archivo con cuidado de no equivocarte de línea, y luego esperar que no haya conflictos. En Lazygit marcas los commits, pulsas f en los que quieres fusionar, los reordenas con ctrl+j/ctrl+k, y listo. En menos de un minuto.
Cherry-pick visual
Otra de las que me flipan. Pulsas C para copiar un commit (se marca visualmente con un color, así sabes que está en el portapapeles), navegas a otra rama, y pulsas V para pegarlo. Puedes copiar varios commits y pegarlos todos de golpe.
En CLI esto requiere saber el hash de cada commit, cambiar de rama, ejecutar git cherry-pick con los hashes, acordarte del orden… aquí es copiar y pegar. Y además, si seleccionas varios commits con la tecla v (range select), puedes copiarlos todos de una vez.
Bisect visual
El git bisect es una herramienta increíble para encontrar qué commit introdujo un bug. Te hace una búsqueda binaria en el histórico: marcas un commit como bueno, otro como malo, y él te va diciendo qué commit investigar a continuación. Pero en CLI es un poco coñazo porque tienes que ir ejecutando comandos, marcando, y acordarte del estado.
En Lazygit, pulsas b en la vista de commits, marcas el commit actual como bad o good, y él te va guiando. Te dice: “ahora prueba este commit”. Marcas. “Ahora este otro”. Marcas. Y así hasta encontrar el culpable. Todo visual, todo con teclas. Y cuando terminas, te muestra el commit maldito.
Undo y Redo
Esto es magia. Pulsa z para deshacer la última operación. ¿Hiciste un reset que no debías? ¿Un squash que te cargó commits? ¿Un cherry-pick en la rama equivocada? z y vuelta atrás. Lazygit usa el reflog de git por debajo, así que puede deshacer incluso acciones que hiciste fuera de Lazygit. Si borraste una rama desde la terminal, z en Lazygit la recupera.
No funciona durante un rebase (en ese caso usa m > abort), pero para el resto, es una red de seguridad enorme. Y si deshaces de más, Z (mayúscula) rehace. Es como tener Ctrl+Z en git.
Resolución de conflictos
Cuando hay un conflicto al hacer merge o rebase, Lazygit te muestra los archivos en conflicto en el panel de archivos, marcados con un color especial. Pulsas enter para ver el diff, y ves claramente las dos versiones: la tuya y la que viene de la otra rama. Desde ahí puedes abrir tu editor configurado con e para resolverlo.
Una vez resuelto, vuelves a Lazygit, y el archivo ya no aparece como conflicto. Pulsas m y continuas el rebase o merge. Todo fluido, sin tener que acordarte de git add después de resolver cada conflicto.
Custom commands
Esto es lo que convierte a Lazygit en una navaja suiza. Puedes definir comandos personalizados en YAML que se ejecutan con una tecla, con acceso al contexto del archivo, rama o commit seleccionado. Los placeholders te permiten acceder a todo: {{.SelectedFile.Name}}, {{.SelectedLocalBranch.Name}}, {{.SelectedCommit.SHA}}, etc.
Como ves, puedes hacer cosas muy potentes sin salir de la TUI. Git flow, commits con formato convencional, abrir el repo en GitHub, lo que se te ocurra. Y si no te basta con los placeholders, tienes funciones como quote y runCommand para componer lógica más compleja.
Worktrees
Desde hace unas versiones, Lazygit gestiona worktrees, que es una de esas funcionalidades de git infrautilizadas porque en CLI es un lío. Desde el panel de ramas, pulsas w y creas un worktree desde la rama seleccionada. Luego puedes cambiar entre worktrees, listarlos y eliminarlos sin salir de la TUI. Si trabajas con varias ramas simultáneamente, esto es una maravilla. No tienes que estar haciendo git stash y git checkout cada dos por tres.
Stash visual
Gestionar el stash en CLI es otro de esos engorros. git stash list te muestra las entradas, git stash apply 0 aplica la primera, git stash drop 0 la elimina… Tienes que acordarte de los índices, de qué contenía cada stash, de si lo aplicaste o no. En Lazygit ves todas las entradas del stash en un panel, con su mensaje y su diff. Puedes aplicar una, descartarla, ver su diff, o crear una nueva. Todo con una tecla. Y si tienes varias entradas, las ves ordenadas, no tienes que adivinar cuál es cuál.
Lazygit en el ecosistema
Lazygit no vive aislado. Se integra con todo lo que uses a su alrededor, y eso es parte de su magia. No te obliga a cambiar tu flujo de trabajo, se adapta a él.
Integración con just
Si usas just como task runner, puedes añadir una receta para abrir Lazygit directamente. Yo tengo esto en mi justfile:
# justfile lg: lazygit
O algo más elaborado, como abrir Lazygit y después ejecutar hooks:
commit: lazygit just lint just test
De esta forma, haces el commit desde Lazygit, y al salir se ejecutan las tareas de lint y test. Todo automatizado.
Como difftool
Puedes configurar Lazygit como tu difftool externo. Esto te permite usarlo para ver diferencias desde la terminal cuando no estás dentro de la TUI:
git config --global diff.tool lazygit git config --global difftool.lazygit.cmd 'lazygit difftool "$LOCAL" "$REMOTE"'
Con tu editor favorito
Lazygit detecta automáticamente el editor configurado en el sistema, pero puedes forzarlo en la configuración. Tiene presets para los editores más comunes:
os: editPreset: 'nvim' # vim, nvim, emacs, vscode, sublime, helix, zed, nano, micro...
Y desde Lazygit, pulsando e sobre un archivo lo abres en el editor configurado. O o para abrirlo con el visor del sistema (xdg-open en Linux, open en macOS). También puedes usar s para abrir en Sublime Text, v para VSCode… aunque es mejor tenerlo configurado con editPreset y usar siempre e.
Stacked branches
Una funcionalidad que ha ganado popularidad en los últimos años es el trabajo con stacked branches. Lazygit lo soporta de forma visual desde hace varias versiones. Si tienes configurado git config rebase.updateRefs true, Lazygit marca las cabezas de rama con un asterisco cian en el grafo. Al hacer rebase de la rama superior, las inferiores se actualizan automáticamente. Es un flujo de trabajo muy usado en equipos que revisan PRs pequeños y frecuentes.
GitHub Actions y CI
¿Se puede usar Lazygit en CI? No realmente, porque es una TUI interactiva. Pero puedes usar sus scripts y configuraciones para generar informes o validar cosas. Por ejemplo, puedes tener un script que ejecute comandos de git y luego abra Lazygit para revisar el resultado:
#!/bin/bash git add -A git commit -m "WIP" lazygit
O más práctico, usar Lazygit como parte de un flujo de revisión local antes de hacer push, integrándolo con pre-push hooks.
Pros y contras
Después de usarlo a diario durante meses, esto es lo que he sacado en claro. Y cuando digo meses, son años ya. Lo he usado en proyectos personales, en el trabajo, en repos pequeños y en monorepos con decenas de desarrolladores.
Lo bueno
- Curva de aprendizaje casi nula. Si sabes usar git, en 10 minutos eres productivo. Si no sabes, te ayuda a entender cómo funciona git porque ves los efectos de cada operación en tiempo real.
- Interactive rebase visual. El killer feature. No concibo la vida sin él. Cada vez que tengo que limpiar el histórico antes de un PR, lo hago en segundos.
- Configurable al máximo. Temas, keybindings, custom commands, paneles laterales, colores por autor, iconos personalizados por extensión… Cada uno puede tener su Lazygit a su medida.
- Muy activo. 80k estrellas, releases cada 1-2 meses, comunidad enorme de más de 1.000 contribuidores. No es un proyecto muerto ni mucho menos. La evolución desde 2018 ha sido bestial.
- Integración con gh, editores, just, lo que quieras. No te aísla, se integra con tu flujo.
- Undo/Redo mediante reflog. Una red de seguridad que te salva de tus propios errores. Y funciona incluso para acciones fuera de Lazygit.
- Multiplataforma. Linux, macOS, Windows, FreeBSD, Termux en Android… funciona donde tengas una terminal.
Lo malo
- Si eres un ninja de git CLI, quizás no lo necesites. Aunque no descartes que te acabe gustando ver los commits y el stash de forma visual.
- En repos con miles de archivos, el renderizado puede ir lento. No es lo ideal para monorepos enormes tipo Google. Para repos normales va perfecto.
- Necesitas Nerd Fonts para los iconos. Sin ellas, los símbolos se ven raros o salen caracteres extraños. Es un paso extra de configuración que a algunos les puede parecer una molestia.
- Operaciones con submodules complejos no están del todo cubiertas. Si trabajas con submodules muy anidados, quizás tengas que salir a la terminal.
- La configuración YAML puede ser abrumadora al principio. Hay muchas opciones y no todas están bien documentadas. Pero con la configuración por defecto ya se usa perfectamente.
- Dependencia de la CLI de git. Desde v0.61.0 eliminó la dependencia de go-git y ahora todo pasa por los comandos
gitdel sistema. Esto es bueno porque siempre usa tu versión de git, pero significa que si tienes una versión muy antigua, algunas features pueden no funcionar.
Alternativas
Lazygit no es la única TUI para git, aunque sí la más completa. Aquí tienes un rápido vistazo a las alternativas más relevantes:
| Feature | Lazygit | tig | GitUI | GitKraken CLI |
|---|---|---|---|---|
| Gratuito | Sí | Sí | Sí | Freemium |
| Terminal (TUI) | Sí | Sí | Sí | No (Electron) |
| Interactive rebase | Completo | Básico | No | Sí (pago) |
| Stage líneas | Sí | Sí | Sí | Sí |
| Custom commands | Sí | Limitado | No | No |
| Undo/Redo | Sí | No | No | Sí |
| Worktrees | Sí | No | No | Sí |
| PR integration | Sí (gh) | No | No | Sí |
tig es la más veterana, escrita en C con más de 12k estrellas. Es excelente para explorar el histórico y hacer cosas rápidas, pero se queda corta para interactive rebase y operaciones avanzadas. Si solo necesitas un visor de commits, es perfecta.
gitui está escrita en Rust y es más rápida y ligera que Lazygit en benchmarks. En un repositorio grande de Linux, consume 0.17 GB de RAM frente a los 2.6 GB de Lazygit. Pero le faltan features clave: interactive rebase, custom commands, commit graph, worktrees. Si solo necesitas lo básico y priorizas la velocidad, es una opción excelente.
GitKraken CLI es la versión en terminal de GitKraken. Es freemium, con features avanzadas (como interactive rebase y PR integration) en modo de pago. Al estar basado en Electron, es más lento y pesado. Y requiere conexión a internet para algunas features.
¿Cuál elegir? Si quieres la herramienta más completa, con todas las features que necesitas para el día a día, Lazygit sin duda. Si priorizas la velocidad y solo haces operaciones básicas (stage, commit, push, pull), gitui es una alternativa ligera. Si te gusta el minimalismo y solo quieres explorar el histórico, tig te cubre.
Conclusión
¿Merece la pena? Desde luego. Llevo años usando Lazygit a diario y no concibo trabajar con git sin él. Me ha salvado de errores tontos, me ha hecho más rápido en operaciones que antes me daban pereza, y me ha ayudado a entender mejor cómo funciona git por dentro. Cuando ves visualmente lo que hace un rebase, un merge, un cherry-pick, dejas de tenerle miedo a estas operaciones.
El interactive rebase visual, el cherry-pick con copiar y pegar, el undo/reflog integrado, los custom commands, la integración con gh para crear PRs… son de esas cosas que cuando las pruebas, no entiendes cómo has podido vivir sin ellas. Y todo sin salir de la terminal, sin ralentizaciones, sin una interfaz gráfica pesada.
Pero ojo, no es una herramienta para novatos exclusivamente. De hecho, cuanto más sabes de git, más partido le sacas. Porque entiendes lo que está haciendo por debajo. El interactive rebase visual no oculta la complejidad, la hace manejable. Y los custom commands te permiten automatizar cualquier flujo que tengas en tu equipo.
Si usas git, pruébalo. Diez minutos. Ejecuta lazygit en un repositorio y juega con los paneles. Haz un commit, un squash, un cherry-pick. Mueve un commit de un sitio a otro. Deshazlo con z. Vuélvelo a hacer. Te sorprenderá lo rápido que se vuelve parte de tu flujo de trabajo.
Y si ya lo usas, cuéntame en los comentarios qué es lo que más te gusta. A mi el interactive rebase, sin duda. ¿Y a ti?
Más información,
- Repositorio oficial de Lazygit
- Documentación oficial
- Guía de configuración de Lazygit
- Atajos de teclado por defecto
- Custom commands en Lazygit
- Undo/Redo en Lazygit
- Stacked branches en Lazygit
- Lazygit — Página de la comunidad
- tig — alternativa TUI
- gitui — alternativa TUI en Rust
- GitKraken CLI — alternativa
- Tutorial de interactive rebase con Lazygit
- 15 Lazygit Features in 15 Minutes (YouTube)
- Discord de Lazygit
Buenas,
Podrias hacer como un añadido de la manera de configurar Lazygit para usarlo con git. No el uso de Lazy sino la configuración de git para después usarlo con Lazy.
Gracias
Hola Lorenzo, solo indicarte que el link al que apunta `lazygit`es esta misma página https://atareao.es/instalar-de-repositorio/lazygit-team/release/lazygit . Saludos