glab-tool
v1.0.5
Published
GitLab Extended CLI Tool - A multi-purpose GitLab utility CLI
Downloads
163
Readme
glab-tool - GitLab Extended CLI Tool
一个多功能的 GitLab 命令行工具集。
功能特性
- 列出分支 - 显示项目所有分支及其详细信息(创建日期、作者、保护状态)
- 智能清理 - 清理已合并或已关闭的合并请求对应的源分支
- 交互式选择 - 使用 inquirer 进行交互式分支选择
- 按状态分组 - 分支按 "已合并" 和 "已关闭" 分组展示
- 干运行模式 - 预览将删除的分支而不实际执行
- 强制删除 - 支持强制删除受保护分支
- 本地分支清理 - 可选同时删除本地对应的 Git 分支
- 通配符支持 - 目标分支支持通配符匹配(如
release/*)
安装
npm install -g glab-tool快速开始
- 创建配置文件
.glabrc:
gitlab_url=https://gitlab.example.com/api/v4
gitlab_token=your_access_token
project_id=your_project_id- 列出所有分支:
glabx list- 清理分支(交互式选择):
glabx clean使用说明
全局选项
--config <file>: 配置文件路径(默认:.glabrc)
命令
glabx list
列出 GitLab 项目的所有分支。
glabx list输出示例:
Found 15 branches:
+-------------------+--------------+------------------+-----------+
| Branch | Created Date | Author | Protected |
+-------------------+--------------+------------------+-----------+
| main | 2024-01-15 | John Doe | Yes |
| feature/user-auth | 2024-02-20 | Jane Smith | No |
| bugfix/login | 2024-02-22 | Bob Wilson | No |
+-------------------+--------------+------------------+-----------+glabx clean
清理目标分支的已合并/已关闭合并请求对应的源分支。
glabx clean [options]选项:
-t, --target <branch>: 目标分支(默认:main),支持通配符如release/*-f, --force: 强制删除受保护分支(远程)和未合并分支(本地)-d, --dry-run: 预览模式,显示将删除的分支但不实际删除-l, --local: 同时删除本地对应的 Git 分支
使用示例:
# 清理 targeting main 分支的分支(仅远程)
glabx clean --target main
# 同时删除远程和本地分支
glabx clean --target main --local
# 预览将删除的分支(包括本地分支检查)
glabx clean --target main --local --dry-run
# 强制删除(包括受保护的远程分支和未合并的本地分支)
glabx clean --target main --local --force
# 使用通配符匹配多个目标分支
glabx clean --target release/*
# 交互式选择(无参数)
glabx clean关于 --local 说明:
- 仅在当前目录是 Git 仓库且分支存在时才会删除本地分支
- 默认使用
git branch -d安全删除(仅删除已合并的分支) - 配合
--force使用git branch -D强制删除(即使分支未合并) - dry-run 模式下会显示
[local exists]标识表示本地有对应分支
配置
支持三种配置方式(优先级从高到低):
1. 配置文件 .glabrc
# GitLab API 地址
gitlab_url=https://gitlab.example.com/api/v4
# GitLab 访问令牌
gitlab_token=glpat-xxxxxxxxxxxx
# 项目 ID 或路径(如 group/project)
project_id=1232. 环境变量
export GITLAB_URL=https://gitlab.example.com/api/v4
export GITLAB_TOKEN=glpat-xxxxxxxxxxxx
export PROJECT_ID=1233. 命令行参数
(当前版本通过配置文件或环境变量配置)
技术栈
- Node.js >= 18.0.0
- Commander ^13.1.0 - CLI 命令解析
- Axios ^1.6.0 - GitLab API 客户端
- Inquirer ^9.2.12 - 交互式提示
项目结构
git-clean/
├── index.js # 主入口,CLI 命令定义
├── package.json
├── src/
│ ├── list.js # 列出分支功能
│ └── cleanup.js # 清理分支功能
└── README.md架构说明
CLI 层 (index.js)
↓
业务层 (list.js / cleanup.js)
↓
工具层 (配置读取、API 调用)
↓
外部层 (GitLab API、配置文件)数据流向
列出分支流程
- 读取配置(文件 → 环境变量)
- 创建 GitLab API 客户端
- 分页获取所有分支
- 对每个分支获取最后提交信息
- 格式化输出表格
清理分支流程
- 读取配置
- 获取目标分支的已合并/已关闭 MR
- 获取当前存在的分支
- 过滤出可清理的分支
- 交互式选择 → 确认 → 删除
开发
# 克隆项目
git clone <repo>
cd git-clean
# 安装依赖
npm install
# 本地运行
node index.js list
node index.js clean许可证
MIT
