Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

检查点、回退与 Git worktree

在文件被 AI 工具修改前自动保存快照,用 /restore 回退;管理会话与历史;用 --worktree 给每个会话独立的代码副本(实验性)。

检查点(Checkpointing)

Gemini CLI 的检查点功能会在任何由 AI 工具发起的文件修改之前,自动保存你项目状态的快照,让你可以放心地试验和应用代码改动,并随时回退到工具运行前的状态。

工作原理:当你批准一个修改文件系统的工具(如 write_file 或 replace)时,CLI 自动创建一个「检查点」,包含:

  1. Git 快照:在位于你主目录的专用影子 Git 仓库(~/.gemini/history/<project_hash>)里做一次提交,捕获当时项目文件的完整状态,不会干扰你自己项目的 Git 仓库
  2. 对话历史:到那一刻为止你与智能体的整个对话
  3. 工具调用:即将执行的那个具体工具调用

想撤销改动或回到过去,用 /restore 命令。恢复检查点会:把项目里所有文件还原到快照捕获的状态;恢复 CLI 里的对话历史;重新提出原来的工具调用,让你再运行一次、修改它、或直接忽略。所有检查点数据(Git 快照和对话历史)都存储在你本机:Git 快照在影子仓库里,对话历史和工具调用以 JSON 文件保存在项目临时目录(通常是 ~/.gemini/tmp/<project_hash>/checkpoints)。

启用:检查点功能默认关闭,需要编辑 settings.json(--checkpointing 命令行标志在 0.11.0 版本被移除,现在只能通过 settings.json 启用)。在 settings.json 里添加:

{
  "general": {
    "checkpointing": {
      "enabled": true
    }
  }
}

会话管理

会话可以用 gemini -r "latest" 或 --resume 恢复,用 --list-sessions 列出、--delete-session 删除;交互里还有 rewind(回放与倒回会话)功能;general.sessionRetention 设置可以自动清理旧会话(如 maxAge 设为 "30d")。

Git worktree(实验性)

同时处理多个任务时,可以用 Git worktree 给每个 Gemini 会话一份自己的代码副本:worktree 创建各自拥有自己文件和分支、但共享同一仓库历史的独立工作目录,防止一个会话里的改动与另一个冲突。这是仍在积极开发的实验性功能。

启用:用 /settings 搜索并把 Enable Git Worktrees 设为 true,或在 settings.json 里:

{
  "experimental": {
    "worktrees": true
  }
}

使用:用 --worktree(-w)标志创建隔离的 worktree 并在其中启动 Gemini CLI。传入的值同时成为目录名(在 .gemini/worktrees/ 里)和分支名:

gemini --worktree feature-search

省略名字时,Gemini 会自动生成一个随机的(如 worktree-a1b2c3d4)。