feat: v0.4.0 — 配置架构重构 + 一键多端推送 + 项目级代理控制\n\n架构重构:\n- 配置从 Platform→User→Project 重构为扁平的 Projects+Groups+Credentials 模型\n- 侧边栏完全重写,适配新分组→项目树结构\n- 新增分组(Group)管理和凭据(Credential)管理\n\n新功能:\n- 一键多端推送:Push All 按钮,将当前分支/标签推送到所有远程仓库\n- 项目级代理控制:每个项目独立设置代理(跟随全局/强制开启/强制关闭)\n- GitClient 新增 RunWithProxy 方法,支持按调用级别覆盖全局代理\n- 所有网络操作(Pull/Push/Fetch)均支持项目级代理设置\n\n其他:\n- 新增 CHANGELOG.md 版本更新日志\n- 更新 README/README_CN 文档,反映最新 72+ API 方法\n- 版本号升级到 0.4.0(config.yml/info.json/Info.plist)
Some checks failed
Release / build-windows (push) Has been cancelled

This commit is contained in:
zyj
2026-03-12 11:41:26 +08:00
parent 3ec453cc38
commit c787c99622
17 changed files with 1443 additions and 727 deletions

View File

@@ -14,10 +14,12 @@
## ✨ 功能特性
### 多平台管理
### 项目与分组管理
- 管理来自 **GitHub**、**Gitee**、**Gitea** 及自建 Git 平台的仓库
- **平台 → 用户 → 项目** 层级组织
- 通过图形界面添加/删除平台、用户和项目
-自定义**分组**组织项目(如 `github/user``gitea``work`
- 按平台管理**凭据**GitHub / Gitee / Gitea支持自定义 Base URL
- 直接在界面中**克隆**远程仓库并分配分组
- 添加 / 删除 / 移动项目到不同分组
### VS Code 风格的 Git 操作
- 以可折叠的**目录树结构**查看变更文件
@@ -27,51 +29,96 @@
- **Diff 查看器** — 语法高亮显示增删内容
- **二进制文件检测** — 自动跳过图片、可执行文件等的预览
### 多远程仓库支持
- 每个项目支持管理多个远程仓库origin、upstream 等)
- **远程仓库选择器** — 下拉切换当前操作的远程仓库
- 通过界面添加 / 删除远程仓库
- **一键推送到所有远程** — 将当前分支推送到全部远程仓库
- **标签多端推送** — 一键将标签推送到所有远程仓库
### 项目级代理控制
- 每个项目可独立控制是否使用代理
- 三种模式:**跟随全局** / **强制使用代理** / **强制不使用代理**
- 所有网络操作Pull / Push / Fetch / Push All均尊重项目级代理设置
- 系统代理自动检测Windows 注册表 / macOS scutil / Linux gsettings
### 提交历史
- 浏览提交历史,显示作者、时间和提交信息
- 点击提交查看该版本的**变更文件列表**(与 VS Code 一致)
- 点击提交查看该版本的**变更文件列表**
- 选中文件查看**单文件 diff**
- **版本回滚** — 支持硬回滚/混合回滚/软回滚,操作前弹出确认对话框
- **撤销提交** — 生成反向提交
- **提交搜索** — 按提交信息关键字和/或作者过滤
### 分支管理
- 查看所有本地分支,标记当前分支
- 查看所有本地分支和远程分支
- **创建 / 删除 / 合并**分支
- 通过下拉菜单**切换分支**
- **拉取/推送/获取远程信息**,自动识别当前分支
- **检出远程分支**到本地
- **删除远程分支**
### 标签管理
- 查看所有标签(显示哈希、描述、时间戳)
- **创建标签**(轻量标签或附注标签)
- **推送标签**到指定远程或所有远程
- **删除标签**(本地和远程同步删除)
### 贮藏管理
- **保存**当前变更(支持自定义描述)
- **应用 / 弹出 / 删除**贮藏条目
- 查看贮藏列表及描述
### 合并冲突处理
- 自动检测合并状态并显示冲突提示
- 在内置编辑器中查看和编辑冲突文件
- **标记已解决 / 中止合并 / 完成合并**
### 批量操作
- 查看所有项目概览(分支、变更数、推送状态)
- **批量 Pull / Push** 所有项目
- 按项目显示操作结果
### Git 安装检测
- 启动时自动检测 Git 是否已安装
- 未安装时显示全屏引导界面
- 支持**自动下载安装** Git for Windows实时显示进度
### 桌面体验
- **系统托盘** — 关闭窗口自动隐藏到托盘,点击托盘图标恢复窗口
- **系统托盘** — 关闭窗口自动隐藏到托盘,点击图标恢复
- **可拖拽调整面板** — 侧边栏、文件列表、查看器之间的分隔条可拖拽
- **暗色主题** — Catppuccin Mocha 配色方案 + Ant Design Vue
- **原生文件夹选择器** — 通过系统对话框选择项目路径
- Git 全局配置编辑user.name / user.email
## 🏗️ 技术栈
| 层级 | 技术 |
|------|------|
| 后端 | Go 1.25, Wails v3 (alpha.74) |
| 后端 | Go 1.25, Wails v3 |
| 前端 | Nuxt 4, Vue 3.5, Vite 7 |
| UI 组件库 | Ant Design Vue 4, @ant-design/icons-vue |
| Git 操作 | Git CLI 封装,支持代理30 秒超时 |
| Git 操作 | Git CLI 封装,支持项目级代理控制 |
| 配置 | 基于 YAML 的持久化配置 |
| 构建 | Taskfile v3 |
| 构建 | Taskfile v3, NSIS 安装包Windows |
## 📁 项目结构
```
GitPilot/
├── main.go # Wails 应用入口,系统托盘,窗口管理
├── config.yaml # 平台/用户/项目配置文件
├── cmd/main.go # Wails 应用入口,系统托盘,窗口管理
├── config.yaml # 项目 / 分组 / 凭据配置文件
├── CHANGELOG.md # 版本更新日志
├── Taskfile.yml # 构建任务
├── go.mod
├── cmd/ # 命令行工具
├── config/
│ └── config.go # YAML 配置加载/保存
│ └── config.go # YAML 配置类型 & 加载/保存
├── internal/
│ ├── proxy.go # 系统代理检测
│ ├── proxy.go # 系统代理检测Windows/macOS/Linux
│ ├── git/
│ │ └── client.go # Git CLI 封装34 个操作)
│ │ └── client.go # Git CLI 封装,支持 RunWithProxy
│ └── app/
── service.go # AppService — 34 个方法暴露给前端
── service.go # AppService — 72 个方法暴露给前端
│ └── gitsetup.go # Git 安装检测 & 自动安装
├── frontend/
│ ├── nuxt.config.ts
│ ├── package.json
@@ -81,10 +128,12 @@ GitPilot/
│ ├── layouts/
│ │ └── default.vue # Ant Design 暗色主题配置
│ └── components/
│ ├── Sidebar.vue # 平台/用户/项目树形侧边栏
│ ├── ContentArea.vue # Git 状态、Diff、历史、分支
── FileTreeNode.vue # 递归文件树组件(含操作按钮
└── build/ # Wails 构建配置
│ ├── Sidebar.vue # 分组/项目树、批量操作、凭据管理
│ ├── ContentArea.vue # Git 状态、Diff、历史、分支、标签
── FileTreeNode.vue # 递归文件树(含暂存/丢弃操作
├── CommitFileTreeNode.vue # 提交文件树查看器
│ └── GitCheck.vue # Git 安装检测界面
└── build/ # Wails 构建配置NSIS 安装脚本
```
## 🚀 快速开始
@@ -108,14 +157,9 @@ cd GitPilot
cd frontend && npm install && cd ..
# 生成 Wails 绑定
wails3 generate bindings
# 构建前端
cd frontend && npx nuxi generate && cd ..
wails3 generate bindings -d frontend/bindings
# 开发模式运行
task dev
# 或者
wails3 dev -config ./build/config.yml -port 9245
```
@@ -129,19 +173,28 @@ task build
## 📋 API 概览
GitPilot 通过 Wails 绑定向前端暴露了 **34 个后端方法**
GitPilot 通过 Wails 绑定向前端暴露了 **72+ 个后端方法**
| 类别 | 方法 |
|------|------|
| **项目管理** | GetProjectTree, AddProject, RemoveProject, SelectDirectory |
| **平台管理** | AddPlatform, UpdatePlatform, RemovePlatform, GetPlatformInfo |
| **用户管理** | AddUser, UpdateUser, RemoveUser, GetUserInfo |
| **项目管理** | GetProjectTree, AddProject, RemoveProject, CloneProject, MoveProjectToGroup, SelectDirectory |
| **分组管理** | GetGroups, AddGroup, UpdateGroup, RemoveGroup |
| **凭据管理** | GetCredentials, AddCredential, UpdateCredential, RemoveCredential |
| **Git 状态** | GetProjectStatus, GetProjectChangedFiles, GetFileContent, GetFileDiff, GetFileDiffStaged |
| **暂存操作** | StageFiles, UnstageFiles, StageAll, UnstageAll |
| **提交操作** | CommitChanges, DiscardFiles |
| **远程操作** | PullProject, PushProject, FetchProject |
| **提交历史** | GetCommitLog, GetCommitDiff, GetCommitFiles, GetCommitFileDiff |
| **分支管理** | GetBranches, SwitchBranch, ResetProject |
| **远程操作** | PullProject, PushProject, FetchProject, PushToAllRemotes, PushTagToAllRemotes |
| **远程仓库管理** | GetRemotes, AddRemote, RemoveRemote |
| **代理控制** | GetProjectProxy, SetProjectProxy |
| **提交历史** | GetCommitLog, GetCommitDiff, GetCommitFiles, GetCommitFileDiff, RevertCommit, SearchCommitLog |
| **分支管理** | GetBranches, SwitchBranch, CreateBranch, DeleteBranch, MergeBranch, ResetProject |
| **远程分支** | GetRemoteBranches, CheckoutRemoteBranch, DeleteRemoteBranch |
| **标签管理** | GetTags, CreateTag, DeleteTag, PushTag |
| **贮藏管理** | StashSave, GetStashList, StashApply, StashPop, StashDrop |
| **冲突处理** | IsMerging, GetConflictFiles, GetConflictFileContent, SaveConflictFile, ResolveConflictFile, AbortMerge |
| **批量操作** | GetAllProjectOverview, BatchPull, BatchPush |
| **设置** | GetGitGlobalConfig, SetGitGlobalConfig, GetAppSettings, UpdateAppSettings |
| **Git 安装** | CheckGitInstalled, SelectGitInstallDir, InstallGit |
## 📄 开源协议