使用 Go + Wails v2 构建的桌面端批量 Git 项目工具。
支持 Tab 切换「更新依赖」「Cherry-Pick」「强制检出」三种模式
- 选择项目根目录,自动扫描所有 Git 子项目
- 多选项目、多选包,填写目标版本号
- 自动执行:stash → 切换分支 → pull → 修改 package.json → npm install → commit → push
- 失败自动回滚,完成后恢复原分支和本地修改
- 支持自动升版本号(可在设置中配置)
- 选择源分支和目标分支,自动拉取远程最新提交
- 获取最近提交列表(显示 hash、提交信息、作者、相对时间)
- 多项目按分组折叠展示,勾选指定 commit
- 逐条 cherry-pick,遇冲突自动 abort,跳过当前项目
- 自动 push 到目标分支
- 选择源分支,批量将目标分支强制重置为源分支的最新状态
- 自动 stash,切换源分支并 pull 到最新
- 目标分支存在时自动创建
xxx-backup备份分支 - 强制推送覆盖远程目标分支
- 完成后自动恢复原分支和本地修改
- 「还原 -backup 备份分支」:将备份分支的状态强制还原回原分支
- 「清理 -backup 备份分支」:一键删除本地和远程所有备份分支
- 实时终端输出,所有命令过程可见
- 亮色 / 暗色主题切换
- 启动时检查 GitHub Releases 新版本
| 层 | 技术 |
|---|---|
| 桌面框架 | Wails v2 |
| 后端 | Go |
| 前端 | HTML + CSS + vanilla JS |
| UI 风格 | 亮色/暗色双主题,自定义无边框标题栏 |
# 安装依赖
go mod tidy
# 开发模式(热重载)
wails dev
# 生产构建(含自定义图标 + 版本号)
build.bat构建产物位于 build/bin/MultiGit.exe。
首次运行自动在 %APPDATA%/MultiGit/config.json 生成配置文件:
{
"registry": "https://registry.npmmirror.com",
"branches": ["main", "develop"],
"packages": [],
"autoBumpProjects": [],
"rootPath": "",
"updateRepo": "ai-written/multiGit",
"commitCount": 5
}| 字段 | 说明 |
|---|---|
registry |
npm 镜像源地址 |
branches |
可选的分支列表 |
packages |
常用包名 |
packageVersions |
包的默认版本号映射,如 {"lodash": "4.0.0"},设置中可写 lodash@4.0.0 格式 |
autoBumpProjects |
需要自动升版本号的项目目录名 |
rootPath |
上次使用的项目根目录(自动记忆) |
updateRepo |
GitHub 仓库 user/repo,用于版本更新检查(留空禁用) |
commitCount |
Cherry-Pick 模式每次获取的提交数量(默认 5) |
- 点击 设置 配置镜像源、分支和常用包
- 点击 浏览 选择项目根目录
- 选择目标分支
- 勾选要更新的项目
- 勾选要更新的包,填写目标版本号
- 点击 执行更新
- 右侧终端实时显示执行过程
- 点击 Tab 切换到 Cherry-Pick
- 选择源分支
- 勾选要处理的项目
- 输入目标分支名(分支必须已存在于本地或远程)
- 点击 获取最近提交,按项目分组显示 commit 列表
- 勾选需要 cherry-pick 的 commit(支持折叠项目组)
- 点击 执行 Cherry-Pick
- 自动处理:stash → 切源分支 → 切目标分支 → cherry-pick → push → 恢复
- 点击 Tab 切换到 强制检出
- 选择源分支
- 勾选要处理的项目
- 输入目标分支名(将重置为该分支)
- 点击 执行强制检出
- 自动处理:stash → 切源分支并 pull → 备份目标分支(若存在)→ 强制检出并推送 → 恢复
- 如需还原,点击 还原 -backup 备份分支 将备份状态写回原分支
- 备份确认无误后,点击 清理 -backup 备份分支 删除备份分支
推送 v* 标签自动触发 GitHub Actions 构建和发布:
git tag v1.0.0
git push origin v1.0.0