Об этом проекте

# manygit — менеджер git-репозиториев из терминала manygit — это один CLI-инструмент с интерфейсом в стиле lazygit для целого **дерева** git-репозиториев. Укажите ему папку — и все репозитории внутри появятся на одном экране, с указанием ветки и состояния: впереди, позади или есть изменения. Можно выполнить fetch, pull, push или переключить ветку в выделенном репозитории, а также просмотреть граф коммитов, запустить скрипты и посмотреть пул-реквесты GitHub (если установлен CLI `gh`). В отличие от пакетных программ вроде `gita` или `mani`, здесь не нужен конфиг-файл для регистрации репозиториев и не нужно читать вывод: manygit находит репозитории, обходя папки, и вы остаётесь в списке. ## Основные возможности - **Автоматическое обнаружение**: сканирует папку (глубина по умолчанию — 3) в поисках git-репозиториев и группирует их по родительской папке. - **Единый вид статуса**: ветка, счётчики впереди/позади, наличие изменений и локальные репозитории — всё на первый взгляд. - **Прямые действия**: sync (fetch + fast-forward pull), push, переключение веток, отмена изменений (с подтверждением), fetch одного или всех репозиториев. - **Граф коммитов**: полноэкранная визуализация истории коммитов. - **Запуск скриптов**: определите и запускайте скрипты для всех репозиториев. - **Панель PR на GitHub**: список ваших открытых PR и запросов на ревью (требуется CLI `gh`), переход на ветку PR в одну клавишу. - **Git на простом английском**: введите запрос вроде "rebase current onto master", и ИИ-обвязка преобразует его в git-команды для подтверждения. - **Оболочка внутри репозитория**: откройте постоянное приглашение shell в выделенном репозитории, чтобы выполнять любые команды. - **Фильтрация**: фильтруйте репозитории по имени, ветке или тегу; показывайте только репозитории с изменениями/впереди/позади. - **Темы**: несколько цветовых тем (default, serika_dark, dracula, nord, catppuccin, 8008). - **Самообновление**: встроенный модуль обновления с показом журнала изменений. ## Установка **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 Другие способы: `go install github.com/rabeeh-ta/manygit@latest` (Go 1.24+), или сборка из исходников. Чтобы закрепить конкретную версию, передайте тег установщику (например, `bash -s -- v1.0.7`). ## Использование manygit # сканировать текущую папку manygit --root ~/work # сканировать указанную папку manygit stats # вывести статистику загрузок GitHub ## Горячие клавиши (кратко) - `1`–`7`: переключение панелей (Repos, Scripts, Branches, PRs, Graph, Changes, Output) - `j`/`k`: перемещение внутри активной панели - `enter`: действие зависит от контекста (просмотр веток, checkout, запуск скрипта, checkout ветки PR) - `s`/`p`: sync (fetch + ff-pull) / push выделенного репозитория - `d`/`D`: отмена изменений (только отслеживаемых / также неотслеживаемых) - `f`/`r`: fetch одного / повторный fetch всех - `g`: полноэкранный граф коммитов - `n`: полноэкранная новостная лента (заголовки с ИИ-саммари) - `t`: переключение отображения последнего тега - `F`: фильтр по репозиториям с изменениями/впереди/позади - `/`: фильтр списков (репозитории по имени и ветке; ветки по имени; скрипты по имени) - `:`: git-команды на простом английском через ИИ-обвязку - `!`: открыть оболочку в выделенном репозитории - `o`: открыть репозиторий в редакторе - `z`: увеличить активную панель - `esc`: выйти на один уровень состояния назад - `?`: справка (клавиши и настройки) - `q` или `esc esc`: выход ## Конфигурация Необязательный конфиг в `~/.config/manygit/config.yml`: max_depth: 3 # глубина поиска ниже корня (1–5) open_cmd: code # команда редактора для `o` theme: default # default | serika_dark | dracula | nord | catppuccin | 8008 status_glyphs: unicode # или "ascii" ## Безопасность - manygit никогда не пишет в папку запуска. - Сам по себе он никогда не делает force-push, merge или rebase; `s` — это fetch + fast-forward-only pull, `p` — обычный push. - Единственное разрушительное действие, которое он предлагает сам, — отмена изменений (`d`/`D`), и оно всегда запрашивает подтверждение. - Оболочка `!` и ИИ-команды `:` — намеренные исключения с защитой: команды показываются перед запуском, git выполняется со списками аргументов (без shell-конвейеров), опасные флаги отклоняются. ## Релиз (для сопровождающих) Отправьте тег версии (например, `git tag v0.2.0 && git push origin v0.2.0`) — GitHub Actions соберёт бинарники и опубликует релиз; установщик и самообновление подхватят его автоматически. Описание релиза становится встроенным журналом изменений. ## Попробовать онлайн Рабочая версия TUI доступна на [лендинге](https://rabeeh-ta.github.io/manygit/) — git там ненастоящий, но клавиши работают.