这个项目能做什么
# 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 是假的,但按键是真的。
评论
0 评分人数达到10人后显示
登录后参与讨论。