这个项目能做什么

# manygit — 多仓库 Git CLI 管理器 manygit 是一个单一的 CLI 工具,为整个 **树** 的 Git 仓库带来 lazygit 风格的终端界面。指向一个文件夹,其下每个仓库都会出现在一个屏幕上,显示其分支以及是否领先、落后或脏。您可以对高亮仓库执行 fetch、pull、push 或切换分支,还可以查看提交图、运行脚本以及浏览 GitHub 拉取请求(当安装了 `gh` CLI 时)。 与 `gita` 或 `mani` 等批量运行器不同,无需配置文件来注册仓库,也无需回读输出:manygit 通过遍历文件夹自动发现仓库,您始终停留在列表中。 ## 主要功能 - **自动发现**:扫描文件夹(默认深度 3)以查找 Git 仓库,并按父目录分组。 - **统一状态视图**:一目了然地查看分支、领先/落后计数、脏状态以及仅本地仓库。 - **直接操作**:同步(fetch + 快进 pull)、push、切换分支、丢弃更改(需确认)、fetch 单个或所有仓库。 - **提交图**:提交历史的全屏可视化。 - **脚本运行器**:跨仓库定义并运行脚本。 - **GitHub PR 面板**:列出您的开放 PR 和审查请求(需要 `gh` CLI),一键检出 PR 的分支。 - **纯英语 Git**:输入如“rebase current onto master”的请求,AI 框架将其转换为 git 命令供您确认。 - **仓库内 shell**:在高亮仓库中打开持久 shell 提示符以运行任意命令。 - **过滤**:按名称、分支或标签过滤仓库;仅显示有更改/领先/落后的仓库。 - **主题**:多种颜色主题(default、serika_dark、dracula、nord、catppuccin、8008)。 - **自我更新**:内置更新器,带变更日志显示。 ## 安装 **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 ``` 其他方法:`go install github.com/rabeeh-ta/manygit@latest`(Go 1.24+),或从源码构建。通过向安装程序传递标签来固定特定版本(例如,`bash -s -- v1.0.7`)。 ## 用法 ```bash manygit # 扫描当前目录 manygit --root ~/work # 扫描特定文件夹 manygit stats # 打印 GitHub 下载统计 ``` ## 按键绑定(摘要) - `1`-`7`:聚焦面板(仓库、脚本、分支、PR、图、更改、输出) - `j`/`k`:在聚焦面板内移动 - `enter`:上下文相关(查看分支、检出、运行脚本、检出 PR 分支) - `s`/`p`:同步(fetch + ff-pull)/ 推送高亮仓库 - `d`/`D`:丢弃更改(仅跟踪 / 也包括未跟踪) - `f`/`r`:fetch 单个 / 重新 fetch 所有 - `g`:全屏提交图 - `n`:全屏新闻源(AI 摘要标题) - `t`:切换最新标签显示 - `F`:过滤到有更改/领先/落后的仓库 - `/`:过滤列表(仓库匹配名称和分支;分支匹配名称;脚本匹配名称) - `:`:通过 AI 框架的纯英语 git 命令 - `!`:在高亮仓库中打开 shell - `o`:在编辑器中打开仓库 - `z`:缩放聚焦面板 - `esc`:回退一层状态 - `?`:帮助覆盖层(按键绑定和设置) - `q` 或 `esc esc`:退出 ## 配置 可选配置位于 `~/.config/manygit/config.yml`: ```yaml max_depth: 3 # 根目录以下要搜索的文件夹(1-5) open_cmd: code # `o` 的编辑器命令 theme: default # default | serika_dark | dracula | nord | catppuccin | 8008 status_glyphs: unicode # 或 "ascii" ``` ## 安全性 - manygit 从不写入启动文件夹。 - 它本身从不强制推送、合并或变基;`s` 是 fetch + 仅快进 pull,`p` 是普通 push。 - 它自身提供的唯一破坏性操作是丢弃更改(`d`/`D`),这总是要求确认。 - `!` shell 和 `:` AI 命令是刻意的例外,带有保障措施:命令在运行前显示,git 使用参数列表执行(无 shell 管道),并拒绝危险标志。 ## 发布(维护者) 推送版本标签(例如,`git tag v0.2.0 && git push origin v0.2.0`)——GitHub Actions 构建二进制文件并发布版本;安装程序和自更新器会自动获取。发布说明成为应用内变更日志。 ## 在线试用 TUI 的工作端口运行在[落地页](https://rabeeh-ta.github.io/manygit/)上——git 是假的,但按键是真的。