跳转到内容

Git · ChangeSet

Blyck 提供两层版本管理。用 Git 管理文件,用 ChangeSet 追踪 Git 看不到的部分(DB · SSH · 包),无论改了什么都能查看和撤销。

Ctrl+Shift+H 打开变更历史窗口,点击 AI 聊天底部的 📦 ChangeSet chip 也会打开同一窗口。


Windows 构建内置了 MinGit。若系统中已安装 git 则优先使用它,没有则自动回退到内置 MinGit。即使在从未安装过 git 的 PC 上,提交·推送·ChangeSet 也都能工作。


ChangeSet —— 所有变更的单一历史

Section titled “ChangeSet —— 所有变更的单一历史”

项目中发生的变更不分种类,集中记录到一处。无需锁定或签出流程,变更发生的瞬间就自动收录。只读操作(SELECT · file_read · ls)不会记录。

种类记录内容
文件变更前/后内容、时间、来源(👤 人 / ✨ AI)
DB DDLSQL 原文、自动生成的逆 SQL、风险等级
DB DMLSQL 原文、影响行数、用于撤销的预备份行
SSH 执行执行命令、服务器、部分输出、风险等级
包名、运行时

打开窗口:Ctrl+Shift+H 或 AI 聊天底部的 📦 chip。用 [全部变更 | 此作业] 切换在全部历史和当前聊天作业范围之间切换。


ChangeSet 窗口由三个标签构成。

将未提交文件(基于 git status)与 DB·SSH·包变更(基于 history)一并显示。可选择条目执行 撤销

  • 未提交文件 → git checkout(取消修改)或删除新文件
  • DB 变更 → 执行自动生成的逆 SQL
  • SSH 变更 → 可推断逆命令时自动提示

基于 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(CREATEDROPADD COLUMNDROP COLUMN)
DML恢复为执行前备份的行(一层/二层备份,见下文)
SSH可推断逆命令时自动提示(mkdirrmdir),不可时手动引导

AI 在执行 DML 之前会自动生成备份。

  • 一层 —— 单表·可解析 WHERE·有 PK·≤1,000 行的情况:将变更前的行 JSON 保存到历史 DB(blyck-history.db)的 dml_backup 中。撤销时立即恢复。
  • 二层 —— 大批量·复杂查询·无 PK 的情况:在目标 DB 中创建备份表(blyck_bak_…)保留。撤销完成后备份表自动删除。
  • 执行前提供 逆操作预览 + 确认模态 —— DROP / DELETE 为红色警告
  • 撤销中间条目时会警告”之后的 N 个变更将被覆盖”
  • 当前值与记录值不同时(在别处又被改动)会再次确认是否强制
  • 撤销本身也会作为新历史记录 —— 可以撤销撤销

历史保存在 %APPDATA%\Blyck\blyck-history.db 中。

策略标准
每个对象最大保留最近 40 个条目
自动清理周期删除超过 14 天的条目
DB 大小上限2 GB
单文件大小上限超过 1 MB 的文件不予记录

在 ChangeSet 窗口的提交历史标签或命令面板(Ctrl+Shift+P)中执行 Git 操作。

操作说明
检查点将作业途中的自动保存点生成为带时间戳的提交。实验过程中随时可以回到。
按作业提交把当前聊天(作业)中发生的文件·DB·SSH 变更汇集为一个提交。用 ✨ 按钮自动生成 AI 提交消息。
选择提交 / 全部提交挑选文件提交,或一次性全部提交。
diff按工作树、特定提交、两个提交之间、特定作业范围等所需基准比较。
discard取消工作树变更。
log查询提交历史。
push将当前分支推送到远程仓库。

用 GitHub OAuth device flow 登录。在浏览器中输入一次代码即完成,令牌加密保管在 OS 凭据存储(safeStorage)中。

  1. 命令面板(Ctrl+Shift+P)→ “GitHub 登录” 或 ChangeSet 窗口顶部的 GitHub 按钮
  2. 浏览器打开后输入显示的代码进行认证
  3. 完成后 push/pull 认证会自动处理
操作说明
Publish将本地项目在 GitHub 上创建为新仓库并推送
Clone将 GitHub 仓库克隆到本地文件夹
Link将既有本地仓库与 GitHub 仓库关联

联动后 push/pull 认证会自动处理。令牌加密保存在 OS 凭据存储中,因此无需每次登录。



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 命令有时无法撤销? 仅在能自动推断逆命令的情况(如 mkdirrmdir)才会自动提示。有副作用的命令需手动处理。

Q. GitHub device flow 登录过期了。 在命令面板中再次执行”GitHub 登录”重新认证即可。此后 push/pull 会再次自动处理。

Q. 历史 DB 文件变得太大了。 %APPDATA%\Blyck\blyck-history.db 由 2 GB 上限和 14 天自动清理策略管理。大文件(超过 1 MB)不予记录。要立即清理,重启应用即可触发清理例程。