Sobre el proyecto

# manygit — Un Gestor CLI de Múltiples Repositorios Git manygit es una herramienta CLI única que aporta una interfaz de terminal estilo lazygit a un **árbol** completo de repositorios git. Apúntala a una carpeta y cada repo que contenga aparecerá en una sola pantalla, mostrando su rama y si está adelantado, atrasado o sucio. Puedes hacer fetch, pull, push o cambiar de rama en el repo resaltado, además de ver un gráfico de commits, ejecutar scripts y navegar por las pull requests de GitHub (cuando la CLI `gh` está instalada). A diferencia de ejecutores por lotes como `gita` o `mani`, no hay archivo de configuración para registrar repos ni salida que leer: manygit los descubre recorriendo la carpeta y te mantiene en la lista. ## Características Clave - **Descubrimiento automático**: Escanea una carpeta (profundidad predeterminada 3) en busca de repositorios git y los agrupa por directorio padre. - **Vista de estado unificada**: Ve rama, conteos adelantado/atrasado, estado sucio y repos solo locales de un vistazo. - **Acciones directas**: Sincronizar (fetch + pull con avance rápido), push, cambiar de rama, descartar cambios (con confirmación), fetch de uno o todos los repos. - **Gráfico de commits**: Visualización a pantalla completa del historial de commits. - **Ejecutor de scripts**: Define y ejecuta scripts en varios repos. - **Panel de PRs de GitHub**: Lista tus PRs abiertas y solicitudes de revisión (requiere CLI `gh`), con checkout de la rama de una PR con una tecla. - **Git en lenguaje natural**: Escribe solicitudes como "rebase actual sobre master" y un sistema de IA las convierte en comandos git para tu confirmación. - **Shell dentro del repo**: Abre un prompt de shell persistente en el repo resaltado para ejecutar comandos arbitrarios. - **Filtrado**: Filtra repos por nombre, rama o etiqueta; muestra solo repos con cambios/adelantados/atrasados. - **Temas**: Múltiples temas de color (default, serika_dark, dracula, nord, catppuccin, 8008). - **Autoadaptable**: Actualizador integrado con visualización de registro de cambios. ## Instalación **Linux** ```bash curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash ``` **macOS** ```bash brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit ``` **Windows (PowerShell)** ```powershell irm https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.ps1 | iex ``` Otros métodos: `go install github.com/rabeeh-ta/manygit@latest` (Go 1.24+), o compilar desde el código fuente. Fija una versión específica pasando la etiqueta al instalador (por ejemplo, `bash -s -- v1.0.7`). ## Uso ```bash manygit # escanea el directorio actual manygit --root ~/work # escanea una carpeta específica manygit stats # imprime estadísticas de descargas de GitHub ``` ## Atajos de Teclado (Resumen) - `1`-`7`: Enfocar paneles (Repos, Scripts, Ramas, PRs, Gráfico, Cambios, Salida) - `j`/`k`: Moverse dentro del panel enfocado - `enter`: Depende del contexto (ver ramas, checkout, ejecutar script, checkout de rama de PR) - `s`/`p`: Sincronizar (fetch + pull con avance rápido) / push del repo resaltado - `d`/`D`: Descartar cambios (solo rastreados / también no rastreados) - `f`/`r`: Fetch de uno / refetch de todos - `g`: Gráfico de commits a pantalla completa - `n`: Fuente de noticias a pantalla completa (titulares resumidos por IA) - `t`: Alternar visualización de la última etiqueta - `F`: Filtrar a repos con cambios/adelantados/atrasados - `/`: Filtrar listas (repos coinciden con nombre y rama; ramas con nombre; scripts con nombre) - `:`: Comandos git en lenguaje natural mediante sistema de IA - `!`: Abrir shell en el repo resaltado - `o`: Abrir repo en editor - `z`: Zoom del panel enfocado - `esc`: Retroceder un nivel de estado - `?`: Superposición de ayuda (atajos y ajustes) - `q` o `esc esc`: Salir ## Configuración Config opcional en `~/.config/manygit/config.yml`: ```yaml max_depth: 3 # carpetas bajo la raíz a buscar (1-5) open_cmd: code # comando del editor para `o` theme: default # default | serika_dark | dracula | nord | catppuccin | 8008 status_glyphs: unicode # o "ascii" ``` ## Seguridad - manygit nunca escribe en la carpeta de lanzamiento. - Por sí solo, nunca hace force-push, merge o rebase; `s` es fetch + pull solo con avance rápido, `p` es push simple. - La única acción destructiva que ofrece por sí solo es descartar cambios (`d`/`D`), que siempre pide confirmación. - El shell `!` y los comandos de IA `:` son excepciones deliberadas, con salvaguardas: los comandos se muestran antes de ejecutarse, git se ejecuta con listas de argumentos (sin tuberías de shell) y se rechazan banderas peligrosas. ## Publicación (Mantenedor) Empuja una etiqueta de versión (por ejemplo, `git tag v0.2.0 && git push origin v0.2.0`) — GitHub Actions compila los binarios y publica la versión; el instalador y el autoadaptador la recogen automáticamente. Las notas de la versión se convierten en el registro de cambios de la aplicación. ## Pruébalo en Línea Una versión funcional de la TUI se ejecuta en la [página de inicio](https://rabeeh-ta.github.io/manygit/) — el git es falso, pero las teclas son reales.