A desktop Git graph workbench for command-first workflows.
Gitio 是一个面向 PC 端的 Git 桌面工作台。它不试图隐藏 Git 命令,而是把仓库状态、分支、提交图谱、配置文件和常用操作放进一个清晰的桌面界面里。
- 仓库工作台:支持收藏多个本地仓库,切换后自动加载对应分支、提交线、
.git文件和 config。 - 提交图谱:按当前选中分支展示提交线,支持点击提交查看详情,merge 线使用 SVG lane 绘制。
- 命令确认:所有 Git 命令执行前都会弹出确认框,并展示完整命令,避免误操作。
- 常用 Git 操作:内置 fetch、pull、push、status、stage、commit、amend、show、log 等入口。
- 自定义命令:支持保存常用命令,也支持为每个仓库单独保存 push 指令,适配 GitLab 和 Gerrit 工作流。
.git浏览:可以查看当前仓库真实.git目录,支持 worktree/submodule 的 gitfile 场景。- Config 编辑:支持读取、编辑和保存仓库
.git/config与全局.gitconfig。 - 明暗色主题:提供清爽的亮色和深海蓝暗色主题,使用太阳/月亮图标切换。
- 在线更新:标题栏展示当前版本,启动时自动检查 GitHub Release,有新版本时高亮提示并支持下载、安装和重启。
Gitio 当前采用三栏工作台布局:
- 左侧:仓库收藏、当前分支选择、已保存命令。
- 中间:当前分支提交图谱和提交行列表。
- 右侧:Inspector,用于查看提交、执行命令、浏览
.git文件、编辑 config。
- Tauri 2:桌面应用壳、本地目录选择和 Rust 后端命令桥接。
- Vue 3 + TypeScript:前端界面、状态和组件组织。
- Naive UI:按钮、输入框、滚动条、弹窗和反馈组件。
- TailwindCSS + SCSS:三栏布局、主题变量和局部视觉样式。
- Axios:预留 GitLab/Gerrit REST API 扩展层。
- Git CLI:所有 Git 行为最终通过本机 Git 执行,尽量保持和命令行一致。
- Node.js >= 20
- npm >= 10
- Rust 工具链
- 系统已安装 Git,并且
git可以在终端中访问
npm installnpm run tauri:devnpm run buildnpm run tauri:build启用 updater artifacts 后,完整桌面构建需要设置 TAURI_SIGNING_PRIVATE_KEY。如果密钥带密码,还需要设置 TAURI_SIGNING_PRIVATE_KEY_PASSWORD。未设置私钥时,本地可能已生成 MSI/NSIS 安装包,但会在 updater 签名产物阶段失败。
在线更新使用 Tauri 官方 updater 插件,更新源指向 GitHub Release:
https://github.com/Msg-Lbo/gitio/releases/latest/download/latest.json
发布流程通过 .github/workflows/release.yml 完成:
- 手动触发 workflow 可更新版本号、归档 changelog 并创建 tag。
- 推送
v*.*.*tag 后会构建 Windows 安装包;Linux/macOS 打包会在补齐平台签名和发布策略后再打开。 tauri-apps/tauri-action会上传安装包和 updater JSON 到 GitHub Release。- Tauri updater 需要签名密钥,仓库 Secrets 需配置
TAURI_SIGNING_PRIVATE_KEY,如密钥带密码还需配置TAURI_SIGNING_PRIVATE_KEY_PASSWORD。 - Windows 安装包使用 NSIS,支持用户级/机器级安装,并显示中英文语言选择。
gitio/
├─ src/
│ ├─ components/ # 工作台 UI 组件
│ ├─ composables/ # 提交图谱和工作台状态逻辑
│ ├─ data/ # Git/GitLab/Gerrit 命令模板
│ ├─ services/ # Tauri 命令调用和 HTTP 预留层
│ ├─ styles/ # Tailwind 和 SCSS 主题样式
│ └─ types/ # Git 数据结构类型
├─ src-tauri/
│ ├─ src/lib.rs # Rust 后端 Git CLI 命令实现
│ └─ tauri.conf.json # Tauri 应用配置
├─ docs/assets/ # README 图形资源
├─ scripts/release.mjs # 版本发布辅助脚本
├─ CHANGELOG.md
├─ PROGRESS.md
└─ PROMPT.md
前端通过 src/services/gitApi.ts 调用 Tauri command,后端在 src-tauri/src/lib.rs 中使用本地 Git CLI 读取仓库信息或执行命令。这样可以覆盖普通 Git、GitLab 特殊 ref、Gerrit refs/for/* 等团队自定义参数。
核心状态按领域拆分在 src/composables/workbench/:
state.ts:共享状态和计算属性。useRepositories.ts:仓库收藏和切换。useRepositoryData.ts:仓库概览、分支和提交线。useCommands.ts:命令确认、执行和自定义命令。useGitFiles.ts:.git文件浏览和保存。useConfigFiles.ts:Git config 读取和保存。useTheme.ts:明暗色主题。src/composables/useAppUpdater.ts:应用版本读取、更新检查、下载进度和安装重启。
- Gitio 不保存 Git 账号、密码、Token 或 SSH 私钥。
- 命令执行前会显示完整命令并等待确认。
- 不建议在命令中心运行需要交互式编辑器的 Git 命令,例如未配置编辑器时的交互式 rebase。
.git文件和 config 保存能力面向熟悉 Git 内部结构的用户,修改前请确认当前仓库状态。
项目处于早期可用阶段,核心工作台、命令执行、提交图谱、仓库配置和 .git 浏览已经实现。后续重点会放在冲突辅助、命令历史、GitLab/Gerrit API 配置和更完整的长任务反馈上。