Introducción a LazyGit
LazyGit es una interfaz de terminal (TUI) escrita en Go que simplifica la gestión de repositorios Git. Permite realizar operaciones complejas, como rebasamientos interactivos o gestión de conflictos, de forma visual sin abandonar la línea de comandos.
Instalación en diversos entornos
Para integrar esta herramienta en tu flujo de trabajo, utiliza el gestor de paquetes correspondiente a tu sistema operativo:
- macOS (Homebrew):
brew install lazygit - Linux (Debian/Ubuntu): ```
sudo add-apt-repository ppa:lazygit-team/release
sudo apt update
sudo apt install lazygit
- Windows (Scoop):
scoop install lazygit - Entorno Go:
go install github.com/jesseduffield/lazygit@latest
Para comprobar que la instalación fue exitosa, ejecuta lazygit --version en tu terminal.
Exploración de la Interfaz
Al ejecutar el comando lazygit dentro de un repositorio, verás una pantalla dividida en paneles principales. Puedes navegar entre ellos usando las teclas h/l o los números del 1 al 5.
| Panel | Descripción |
|---|---|
| Files (Archivos) | Muestra el estado actual del árbol de trabajo y el índice (staging area). |
| Branches (Ramas) | Gestión de ramas locales y remotas. |
| Commits | Historial de confirmaciones del branch actual. |
| Stash | Modificaciones guardadas temporalmente. |
Operaciones con Archivos y Commits
La gestión de cambios es ágil mediante atajos de teclado directos:
Espacio: Cambia el estado de un archivo entre preparado (staged) y no preparado.a: Prepara o descarta todos los cambios del panel de archivos.c: Abre un prompt para escribir el mensaje de commit.C: Permite realizar un commit utilizando el editor de texto configurado en el sistema (ej. Vim o Nano).d: Elimina los cambios locales de un archivo específico.
Gestión de líneas específicas (Partial Staging)
Si necesitas añadir solo una parte de un archivo, presiona Enter sobre él. En la vista de diferencias (diff):
- Usa
Espaciopara seleccionar líneas o bloques (hunks) individuales. - Presiona
vpara activar la selección por bloques y procesar múltiples líneas a la vez.
Administración de Ramas y Flujo Remoto
LazyGit facilita la manipulación de ramas sin comandos extensos:
n: Crea una rama nueva a partir del punto actual.Espacio: Realiza un checkout de la rama seleccionada.M: Fusiona (merge) la rama seleccionada dentro de la rama actual.p: Ejecuta ungit pull.P: Ejecuta ungit push(configura el upstream si es necesario).
Rebase Interactivo y Cherry-pick
Una de las funciones más potentes es la edición del historial desde el panel de Commits:
- Ubícate sobre un commit y presiona
ipara iniciar el rebase interactivo. - Utiliza las siguientes teclas para modificar los commits:
r: Renombrar el mensaje (reword).e: Editar el contenido del commit.s: Combinar con el commit anterior (squash).d: Eliminar el commmit (drop).
- Para mover commits de una rama a otra, usa
cpara copiar (cherry-pick) yvpara pegar en el destino deseado.
Resolución de Conflictos
Cuando ocurre una colisión durante un merge o rebase, LazyGit activa el panel de conflictos automáticamente. Al entrar en el archivo conflictivo con Enter, puedes:
- Seleccionar la versión local o remota con las flechas.
- Presionar
Espaciopara aceptar la versión resaltada. - Usar
bpara conservar ambas versiones de código.
Personalización del Entorno
El comportamiento de LazyGit se define en un archivo YAML. En sistemas Unix, este se encuentra usualmente en ~/.config/lazygit/config.yml.
# Ejemplo de personalización de comportamiento
git:
paging:
colorArg: always
pager: delta --dark --paging=never
pull:
mode: 'rebase'
gui:
showIcons: true
theme:
activeBorderColor:
- '#00dfd7'
- bold
Esta configuración fuerza el uso de rebase en cada pull y mejora la visualización de los diffs utilizando herramientas externas como delta.