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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.