Sobre o projeto
# manygit — Um Gerenciador CLI de Múltiplos Repositórios Git
manygit é uma ferramenta CLI única que traz uma interface de terminal no estilo lazygit para uma **árvore** inteira de repositórios git. Aponte-a para uma pasta, e todos os repositórios abaixo aparecem em uma tela, mostrando seu branch e se está à frente, atrás ou sujo. Você pode fazer fetch, pull, push ou trocar de branch no repositório destacado, além de ver um gráfico de commits, executar scripts e navegar por pull requests do GitHub (quando a CLI `gh` estiver instalada).
Diferente de executores em lote como `gita` ou `mani`, não há arquivo de configuração para registrar repositórios nem saída para ler de volta: manygit os descobre percorrendo a pasta, e você permanece na lista.
## Principais Recursos
- **Descoberta automática**: Varre uma pasta (profundidade padrão 3) em busca de repositórios git e os agrupa por diretório pai.
- **Visualização de status unificada**: Veja branch, contagens à frente/atrás, estado sujo e repositórios somente locais de uma só vez.
- **Ações diretas**: Sincronizar (fetch + pull fast-forward), push, checkout de branches, descartar alterações (com confirmação), buscar um ou todos os repositórios.
- **Gráfico de commits**: Visualização em tela cheia do histórico de commits.
- **Executor de scripts**: Defina e execute scripts em todos os repositórios.
- **Painel de PRs do GitHub**: Lista seus PRs abertos e solicitações de revisão (requer a CLI `gh`), com checkout do branch de um PR por uma tecla.
- **Git em inglês simples**: Digite pedidos como "rebase current onto master" e um mecanismo de IA converte para comandos git para sua confirmação.
- **Shell no repositório**: Abra um prompt de shell persistente no repositório destacado para executar comandos arbitrários.
- **Filtragem**: Filtre repositórios por nome, branch ou tag; mostre apenas repositórios com alterações/à frente/atrás.
- **Temas**: Vários temas de cores (default, serika_dark, dracula, nord, catppuccin, 8008).
- **Autoatualização**: Atualizador integrado com exibição de changelog.
## Instalação
**Linux**
curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash
**macOS**
brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit
**Windows (PowerShell)**
irm https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.ps1 | iex
Outros métodos: `go install github.com/rabeeh-ta/manygit@latest` (Go 1.24+) ou compilar do código-fonte. Fixe uma versão específica passando a tag ao instalador (ex.: `bash -s -- v1.0.7`).
## Uso
manygit # escaneia o diretório atual
manygit --root ~/work # escaneia uma pasta específica
manygit stats # imprime estatísticas de download do GitHub
## Atalhos de Teclado (Resumo)
- `1`-`7`: Focar painéis (Repos, Scripts, Branches, PRs, Graph, Changes, Output)
- `j`/`k`: Mover dentro do painel focado
- `enter`: Depende do contexto (ver branches, checkout, executar script, checkout do branch do PR)
- `s`/`p`: Sincronizar (fetch + pull fast-forward) / push do repositório destacado
- `d`/`D`: Descartar alterações (somente rastreadas / também não rastreadas)
- `f`/`r`: Buscar um / buscar todos novamente
- `g`: Gráfico de commits em tela cheia
- `n`: Feed de notícias em tela cheia (manchetes resumidas por IA)
- `t`: Alternar exibição da última tag
- `F`: Filtrar para repositórios com alterações/à frente/atrás
- `/`: Filtrar listas (repositórios correspondem a nome e branch; branches correspondem a nome; scripts correspondem a nome)
- `:`: Comandos git em inglês simples via mecanismo de IA
- `!`: Abrir shell no repositório destacado
- `o`: Abrir repositório no editor
- `z`: Ampliar painel focado
- `esc`: Voltar uma camada de estado
- `?`: Sobreposição de ajuda (atalhos e configurações)
- `q` ou `esc esc`: Sair
## Configuração
Configuração opcional em `~/.config/manygit/config.yml`:
max_depth: 3 # pastas abaixo da raiz a procurar (1-5)
open_cmd: code # comando do editor para `o`
theme: default # default | serika_dark | dracula | nord | catppuccin | 8008
status_glyphs: unicode # ou "ascii"
## Segurança
- manygit nunca escreve na pasta inicial.
- Sozinho, ele nunca faz force-push, merge ou rebase; `s` é fetch + pull somente com fast-forward, `p` é push simples.
- A única ação destrutiva que ele oferece por conta própria é descartar alterações (`d`/`D`), que sempre pede confirmação.
- O shell `!` e os comandos de IA `:` são exceções deliberadas, com salvaguardas: os comandos são exibidos antes de executar, o git é executado com listas de argumentos (sem pipes de shell) e flags perigosas são recusadas.
## Lançamento (Mantenedor)
Envie uma tag de versão (ex.: `git tag v0.2.0 && git push origin v0.2.0`) — o GitHub Actions compila os binários e publica o release; o instalador e o autoatualizador o detectam automaticamente. As notas da versão tornam-se o changelog no aplicativo.
## Experimente Online
Uma versão funcional da TUI roda na [página inicial](https://rabeeh-ta.github.io/manygit/) — o git é falso, mas as teclas são reais.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.