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.