Git · ChangeSet
Blyck 提供两层版本管理。用 Git 管理文件,用 ChangeSet 追踪 Git 看不到的部分(DB · SSH · 包),无论改了什么都能查看和撤销。
用 Ctrl+Shift+H 打开变更历史窗口,点击 AI 聊天底部的 📦 ChangeSet chip 也会打开同一窗口。
MinGit 内置 —— 无需安装 git
Section titled “MinGit 内置 —— 无需安装 git”Windows 构建内置了 MinGit。若系统中已安装 git 则优先使用它,没有则自动回退到内置 MinGit。即使在从未安装过 git 的 PC 上,提交·推送·ChangeSet 也都能工作。
ChangeSet —— 所有变更的单一历史
Section titled “ChangeSet —— 所有变更的单一历史”项目中发生的变更不分种类,集中记录到一处。无需锁定或签出流程,变更发生的瞬间就自动收录。只读操作(SELECT · file_read · ls)不会记录。
| 种类 | 记录内容 |
|---|---|
| 文件 | 变更前/后内容、时间、来源(👤 人 / ✨ AI) |
| DB DDL | SQL 原文、自动生成的逆 SQL、风险等级 |
| DB DML | SQL 原文、影响行数、用于撤销的预备份行 |
| SSH 执行 | 执行命令、服务器、部分输出、风险等级 |
| 包 | 包名、运行时 |
打开窗口:Ctrl+Shift+H 或 AI 聊天底部的 📦 chip。用 [全部变更 | 此作业] 切换在全部历史和当前聊天作业范围之间切换。
ChangeSet 窗口由三个标签构成。
将未提交文件(基于 git status)与 DB·SSH·包变更(基于 history)一并显示。可选择条目执行 撤销。
- 未提交文件 →
git checkout(取消修改)或删除新文件 - DB 变更 → 执行自动生成的逆 SQL
- SSH 变更 → 可推断逆命令时自动提示
提交历史标签
Section titled “提交历史标签”基于 git log 显示提交列表。点击条目可查看该提交的 git show diff,并用 [撤销此提交] 按钮执行 git revert(保留历史,非强制覆盖)。
文件变更以 git push 导出,DB 变更以 SQL 迁移脚本导出。
- 验证(verify) —— 检查无 WHERE 的 UPDATE/DELETE、危险 DDL(
DROP· 添加NOT NULL)、新函数缺少对应测试等。 - 导出(export) —— 导出为 SQL 迁移脚本、用于 PR 的 git 命令集,或 JSON。用于将在开发 DB 上的工作整理为生产应用之用。
可选择历史中任意条目进行撤销。
| 种类 | 撤销方式 |
|---|---|
| 文件 | 恢复为变更前内容 |
| DDL | 执行自动生成的逆 SQL(CREATE↔DROP、ADD COLUMN↔DROP COLUMN) |
| DML | 恢复为执行前备份的行(一层/二层备份,见下文) |
| SSH | 可推断逆命令时自动提示(mkdir↔rmdir),不可时手动引导 |
DML 自动备份(一层 / 二层)
Section titled “DML 自动备份(一层 / 二层)”AI 在执行 DML 之前会自动生成备份。
- 一层 —— 单表·可解析 WHERE·有 PK·≤1,000 行的情况:将变更前的行 JSON 保存到历史 DB(
blyck-history.db)的dml_backup中。撤销时立即恢复。 - 二层 —— 大批量·复杂查询·无 PK 的情况:在目标 DB 中创建备份表(
blyck_bak_…)保留。撤销完成后备份表自动删除。
- 执行前提供 逆操作预览 + 确认模态 ——
DROP/DELETE为红色警告 - 撤销中间条目时会警告”之后的 N 个变更将被覆盖”
- 当前值与记录值不同时(在别处又被改动)会再次确认是否强制
- 撤销本身也会作为新历史记录 —— 可以撤销撤销
历史保留策略
Section titled “历史保留策略”历史保存在 %APPDATA%\Blyck\blyck-history.db 中。
| 策略 | 标准 |
|---|---|
| 每个对象最大保留 | 最近 40 个条目 |
| 自动清理周期 | 删除超过 14 天的条目 |
| DB 大小上限 | 2 GB |
| 单文件大小上限 | 超过 1 MB 的文件不予记录 |
Git 操作
Section titled “Git 操作”在 ChangeSet 窗口的提交历史标签或命令面板(Ctrl+Shift+P)中执行 Git 操作。
| 操作 | 说明 |
|---|---|
| 检查点 | 将作业途中的自动保存点生成为带时间戳的提交。实验过程中随时可以回到。 |
| 按作业提交 | 把当前聊天(作业)中发生的文件·DB·SSH 变更汇集为一个提交。用 ✨ 按钮自动生成 AI 提交消息。 |
| 选择提交 / 全部提交 | 挑选文件提交,或一次性全部提交。 |
| diff | 按工作树、特定提交、两个提交之间、特定作业范围等所需基准比较。 |
| discard | 取消工作树变更。 |
| log | 查询提交历史。 |
| push | 将当前分支推送到远程仓库。 |
GitHub 联动
Section titled “GitHub 联动”用 GitHub OAuth device flow 登录。在浏览器中输入一次代码即完成,令牌加密保管在 OS 凭据存储(safeStorage)中。
- 命令面板(
Ctrl+Shift+P)→ “GitHub 登录” 或 ChangeSet 窗口顶部的 GitHub 按钮 - 浏览器打开后输入显示的代码进行认证
- 完成后 push/pull 认证会自动处理
联动后可用的操作
Section titled “联动后可用的操作”| 操作 | 说明 |
|---|---|
| Publish | 将本地项目在 GitHub 上创建为新仓库并推送 |
| Clone | 将 GitHub 仓库克隆到本地文件夹 |
| Link | 将既有本地仓库与 GitHub 仓库关联 |
联动后 push/pull 认证会自动处理。令牌加密保存在 OS 凭据存储中,因此无需每次登录。
- AI 聊天 —— AI 所做的变更也会自动记录到 ChangeSet
- 代码编辑器 —— 保存文件时记录变更历史,内联 AI 修改也会被追踪
- DB 客户端 —— 执行 DDL/DML 时自动生成逆 SQL·备份
- 终端 · SSH · SFTP —— 记录 SSH 命令执行历史
Q. 没安装 git 也能提交吗? Windows 构建内置了 MinGit,无需另行安装即可提交·推送。
Q. AI 修改的文件在 ChangeSet 中看不到。 AI 用内置 Edit/Write 修改的文件不经过 Blyck 的 file_write 路径,因此不会直接记录到 history。但由于 git 能识别变更,所以会显示在变更标签的未提交文件列表中。
Q. 误执行了 DML,能撤销吗?
能。DML 执行前会生成自动备份(一层:历史 DB,二层:目标 DB 备份表),因此可通过 Ctrl+Shift+H → 对应条目 → 撤销 恢复。无 WHERE 的 UPDATE/DELETE 也能恢复。
Q. 误执行了撤销怎么办?
撤销本身也会作为新历史记录。再次在 Ctrl+Shift+H 中撤销对应的”撤销”条目,即可恢复到原状态。
Q. 想取消提交历史中的某个提交。
在提交历史标签中点击对应提交 → 按下 [撤销此提交] 按钮即可执行 git revert。历史得以保留,并追加一个新的 revert 提交。
Q. 为什么 SSH 命令有时无法撤销?
仅在能自动推断逆命令的情况(如 mkdir↔rmdir)才会自动提示。有副作用的命令需手动处理。
Q. GitHub device flow 登录过期了。 在命令面板中再次执行”GitHub 登录”重新认证即可。此后 push/pull 会再次自动处理。
Q. 历史 DB 文件变得太大了。
%APPDATA%\Blyck\blyck-history.db 由 2 GB 上限和 14 天自动清理策略管理。大文件(超过 1 MB)不予记录。要立即清理,重启应用即可触发清理例程。