跳转到内容

CLI 快速开始

CLI 是建立可用 Graft 仓库的最短路径。本指南会创建 SQLite 数据库和应用文件的 两个版本,然后验证数据库能够恢复。

  1. 创建示例应用目录。

    Terminal window
    mkdir app-state-demo
    cd app-state-demo
  2. 初始化 Graft。

    Terminal window
    graft init

    这会创建 .graft/,但不会创建默认数据库。

  3. 写入 SQLite。

    Terminal window
    graft sql --db data.sqlite "CREATE TABLE notes(id INTEGER PRIMARY KEY, body TEXT);"
    graft sql --db data.sqlite "INSERT INTO notes(body) VALUES ('first note');"
  4. 查看状态。

    Terminal window
    graft status

    data.sqlite 仍是普通 SQLite 文件。Graft 只在检查或暂存该路径时读取它。

  5. 提交第一个应用状态版本。

    Terminal window
    graft add --all
    graft commit -m "seed notes"
  6. 修改数据库并添加文件。

    Terminal window
    graft sql --db data.sqlite "INSERT INTO notes(body) VALUES ('second note');"
    mkdir -p attachments
    printf 'draft\n' > attachments/readme.txt
  7. 查看路径分类。

    Terminal window
    graft status --json

    JSON 中的路径条目会包含 kindstorage

  8. 提交并查看行级差异。

    Terminal window
    graft add --all
    graft commit -m "add second note and attachment"
    graft diff --rows HEAD~1 HEAD data.sqlite
  9. 从最新提交恢复数据库。

    Terminal window
    graft sql --db data.sqlite "DELETE FROM notes;"
    graft restore --source HEAD -- data.sqlite
    graft status
Terminal window
cat <<'SQL' | graft sql --db data.sqlite
CREATE TABLE IF NOT EXISTS notes(id INTEGER PRIMARY KEY, body TEXT);
INSERT INTO notes(body) VALUES ('hello from stdin');
SELECT * FROM notes;
SQL