---
title: "W03 上机练习一：有版本记录的数据简报"
---

# 🧪 练习一：有版本记录的数据简报

[上机导航](https://ai.lingnan.top/materials/2026-autumn/w03/lab-manual) · [常见问题](https://ai.lingnan.top/materials/2026-autumn/w03/faq)

开始之前先按[上机导航](https://ai.lingnan.top/materials/2026-autumn/w03/lab-manual)“开始之前”一节配置 Git、定材料、下载材料包。

**材料三选一，自己定。** ① 自选主题与材料；② 正在上的某门课，选一章，做成“如果你是老师来讲这一章”的讲解课件；③ 没有想法就用给定的实习岗位样本材料包。三种做法步骤相同，手册的示例用第 ③ 种：一份约 150 条岗位的数据表（公司类型、城市、岗位类别、月薪区间、要求技能……），加两页背景和一页口径说明，做成 6–8 页左右的简报，至少 3 张图，图里的每个数字都能在数据表里对上。数据、机构和背景都是教学模拟材料。选 ①② 的，把“数据表”换成你自己的材料读下去即可，各步有专门的说明。

第 2 周的做法是改一版另存一个 `_v2`。这次不再另存：改动直接改在同一个文件上，旧版本由 Git 保管，想看、想比、想退都从版本记录里取。

## 🎬 讲解录播

<video controls preload="metadata" playsinline style="display:block;width:100%;aspect-ratio:16/9;background:#000;border-radius:10px" src="/course-materials/2026-autumn/w03/media/ex1-demo.mp4"></video>

时长 7 分 15.30 秒，带讲解和字幕。播放器右下角可以全屏。

### 分段导览

点击时间会打开视频对应位置，不是同页播放器内跳转。导言之外，左侧节点对应六步操作。

| 时间 | 步骤 | 看什么 |
| --- | --- | --- |
| [0:00](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=0.000000) | 导言与材料 | 手上的模拟材料、要解决的问题、六步流程和观看重点 |
| [0:47](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=46.933333) | 建立记录 | 建项目、白名单与初始化；提交前先报告范围、等确认 |
| [2:04](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=124.266667) | 任务与规则 | 明确读取任务说明和项目规则，再核对复述 |
| [2:39](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=158.800000) | 初版与提交 | 先审计划，生成同一 HTML；打开图表，检查后提交 |
| [3:22](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=202.266667) | 核验与修订 | 回查原表，区分去重与面议；给具体修改意见，看实际 Git 差异 |
| [4:58](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=297.533333) | 两类回退 | 提交深色试改，用 revert 撤销并保留历史；restore 丢弃明确不要的未提交草稿 |
| [6:27](/course-materials/2026-autumn/w03/media/ex1-demo.mp4#t=387.466667) | 项目交接 | 记录人的判断依据，写 README；回看七次提交和干净工作区 |

### 录播说明

- 视频使用 WorkBuddy 图形界面；任务说明、项目规则和 Git 操作可对照本周手册。规则文件采用明确读取并复述，不仅凭文件名假定生效。
- 等待与操作间停顿已压缩，讲解画面有停留，最终历史片段标明“录后回看”。没有把回看伪装成原片连续操作。
- 本片最终有七次提交，试改和撤销都保留，工作区干净；各次具体编号和内容以真实历史为准。


## 第一步：建项目、给文件夹起名、开启版本记录

### 学生做什么

1. 新建项目文件夹（示例名 `实习岗位简报/`）。WorkBuddy 用户在新建任务页选择该文件夹作为工作空间；Claude Code 用户用 VS Code“文件 → 打开文件夹”打开它，在 VS Code 终端里（菜单“终端 → 新建终端”）启动：

   ```bash
   claude
   ```

   以下模式提示仅适用于 Claude Code：不带参数时检查当前权限模式，确认没有开启自动放行；不要据此判断 WorkBuddy 的权限。

2. **给文件夹起名。** 第 2 周用的 `inputs/`、`outputs/` 是课上的例子，不是规定。这次按项目自己的内容起名，短而自明：看名字就知道这个文件夹是什么、范围有多大、操作原则是什么（只读、可改、进不进仓库）、里面大概是哪类文件，智能体看到名字就知道该读还是不该读。中文项目用中文名。三个例子：

   | 项目 | 文件夹 | 范围与操作原则 |
   | --- | --- | --- |
   | 实习岗位简报（选 ③） | `岗位样本数据/` | 原始数据表与背景资料，只读，不进仓库 |
   | | `口径与要求/` | 口径说明、简报要求，只读 |
   | | `简报成品/` | HTML 简报，Git 跟踪 |
   | | `协作记录/` | 任务说明、检查记录、决策日志，Git 跟踪 |
   | 货币银行学第 3 章课件（选 ②） | `课程原始资料/` | 老师课件、教材章节、笔记，只读，不进仓库，不外传 |
   | | `讲解课件/` | HTML 成品 |
   | | `协作记录/` | 同上 |
   | 月度策略研报（第二个练习） | `宏观与行业数据/` | 原始数据，只读，不进仓库 |
   | | `研报草稿/` | 研报 Markdown，Git 跟踪 |
   | | `交付稿/` | 导出的 PDF 等，不进仓库 |

   选 ① 的照这个思路起：原始资料一个文件夹（名字说清是什么数据或资料），口径与要求一个，成品一个，协作记录一个。名字定下来后，后面 `CLAUDE.md` 的“文件约定”一节要为每个文件夹写一行范围和操作原则，和文件夹名互相印证。本手册下文按选 ③ 的四个名字写，选 ①② 的换成你自己的名字。

3. 让 Claude Code 建文件夹（第一句话，名字换成你定的），它会请你批准，看清路径再选允许。

4. **自己**用访达（Mac）或文件资源管理器（Windows）复制文件：

   | 放到 `实习岗位简报/` 下的 | 放什么 |
   | --- | --- |
   | `岗位样本数据/` | 选 ③：材料包 `01_数据简报/岗位样本数据/` 里的 3 个文件（数据表和两份背景）。选 ①②：你自己的资料、数据、课件、教材章节、笔记，放进你起名的原始资料文件夹 |
   | `口径与要求/` | 材料包 `01_数据简报/口径与要求/` 里的 `简报要求.md`；选 ③ 再加 `口径说明.md` |
   | 项目根目录 | `01_数据简报/模板/gitignore_白名单.txt` |

   `简报成品/` 和 `协作记录/` 先空着。

5. 让智能体把 `gitignore_白名单.txt` 改名为 `.gitignore`（第二句话）。打开看一眼，开头的复制说明是注释，可保留；下面的主体规则应一致，**最后一行写你自己的原始资料文件夹名**：

   ```txt
   # 只记录原稿：Markdown 与 HTML
   *
   !*/
   !*.md
   !*.html
   !.gitignore
   # 原始资料不进仓库：最后一行写你的原始资料文件夹名
   岗位样本数据/
   ```

   选 ② 的最后一行写 `课程原始资料/`；选 ① 的写你起的名字，例如 `校园消费数据/`。逐行读：`*` 先把一切挡在外面；`!*/` 放行所有文件夹（不然进不到子目录）；`!*.md`、`!*.html`、`!.gitignore` 放行三类原稿；最后一行把原始资料再挡回去。于是数据表、老师的课件、以后导出的 PDF 和 PNG 都不进仓库，仓库里只有你和 AI 写的原稿。原始资料里有 `.md` 文件（例如你的课堂笔记）也会被最后一行挡住，因为它挡的是整个文件夹。

6. 让它开启版本记录，先不提交，报告会记录哪些文件（第三句话）。核对它的清单：应有 `.gitignore` 和 `口径与要求/` 下的 `.md`，**没有** 原始资料文件夹里的任何文件。清单里出现了原始资料的文件，见《常见问题》第 7 条。

7. 在 VS Code 源代码管理面板看一眼：面板里列出的“更改”应和它的清单一致，每个文件后面标 `U`（新文件，未跟踪）。原始资料文件夹里的文件不出现，这才对。

8. 让它做首次提交（第四句话）。它会请你批准两次：一次 `git add`（把文件放进暂存区），一次 `git commit`（写进历史）。看清命令再选第一个 **Yes**（只允许这一次）。带 `don't ask again` 字样的选项不要选。

### 可以对 Claude Code 说的话

第一句（文件夹名换成你定的）：

```txt
在当前文件夹里创建四个空文件夹：岗位样本数据、口径与要求、简报成品、协作记录。只创建文件夹，不要创建或修改其他文件。
```

第二句：

```txt
把项目根目录里的 gitignore_白名单.txt 改名为 .gitignore，内容一个字都不要改。改完把它的内容念给我看。
```

第三句：

```txt
给这个项目开启版本记录（git init），先不要提交任何东西。然后告诉我两件事：哪些文件会被记录，哪些文件被 .gitignore 挡在外面了。
```

第四句：

```txt
把现在会被记录的文件全部提交，提交说明写“初始化：项目结构与参考材料”。执行前先把你要运行的命令告诉我。
```

### ✅ 自查：第一步

- 项目文件夹里有原始资料文件夹（选 ③ 是 `岗位样本数据/`，3 个文件）、`口径与要求/`（选 ③ 是 2 个文件，选 ①② 至少有 `简报要求.md`）、`简报成品/`（空）、`协作记录/`（空）和 `.gitignore`。Windows 看不到 `.gitignore` 的，在文件资源管理器“查看”菜单里勾选“隐藏的项目”。
- `.gitignore` 最后一行是你的原始资料文件夹名，末尾带斜杠。
- `git status` 显示工作区干净（`nothing to commit, working tree clean`），源代码管理面板显示“没有更改”。
- `git log --oneline` 有 1 行：一串短哈希，后面是“初始化：项目结构与参考材料”。
- 让它列出被记录的文件（它会跑 `git ls-files`），列表里有 `.gitignore` 和 `口径与要求/` 下的 `.md`，没有原始资料文件夹的东西。
- 第一次提交报错 `Author identity unknown`，见《常见问题》第 1 条。

## 第二步：写任务说明和项目规则

### 学生做什么

1. 从 `01_数据简报/模板/` 复制三个文件到 `协作记录/`：`任务说明_模板.md` 改名为 `任务说明.md`，`检查记录.md`、`决策日志.md` 名字不变。再把 `CLAUDE_模板.md` 复制到项目根目录，改名为 `CLAUDE.md`（与 `协作记录/` 文件夹同级，不放进其中或上级文件夹）。

2. 打开 `协作记录/任务说明.md`，按六要素读一遍并改成你的版本。模板里有两个示例：实习岗位简报（选 ③ 直接改）和课程章节讲解课件（选 ② 用；选 ① 参考两者改写）。

   | 要素 | 这个任务里写什么 |
   | --- | --- |
   | 角色 | 选 ③：数据简报助手，数字按 `口径与要求/口径说明.md` 算，不自己定口径。选 ②：这门课的授课老师，讲解范围限于这一章。选 ①：按你的主题定 |
   | 背景 | 给谁看、依据哪些材料（写清原始资料文件夹里有什么）；选 ② 写这一章在课程里的位置 |
   | 任务 | 做一份 6–8 页左右的 HTML 简报或课件，至少 3 张图（数据图、结构图或流程图） |
   | 约束 | 原始资料文件夹不改动；材料里没有的信息不补造（数据、定义、公式都不补）；口径或材料没写清的先问；成果写在一个文件里 |
   | 格式 | 抄 `口径与要求/简报要求.md`：单个 HTML 文件 `简报成品/简报.html`，建议 6–8 页左右；不联网也能打开，图用内嵌 SVG，不引用外部图表库；每张图有标题、单位或说明、来源一行；深色正文、浅色底、字号够大 |
   | 自检 | 抄 `口径与要求/简报要求.md`：图和正文里的数字、定义、公式能在原始资料或口径与要求里找到出处并标出来源文件；列出每个数字的计算过程（数据类）；没有外部链接 |

   最后一句要求它先交计划、等你确认。

3. 打开 `CLAUDE.md`，逐条读，每一条你都能说出为什么要写；不需要的删掉。先写最少的几条。“文件约定”一节按你起的文件夹名改：每个文件夹一行，写范围和操作原则（只读、可改、进不进仓库）。

4. WorkBuddy 用户保存后直接发送下面第一句话，明确读取并复述任务与规则；Claude Code 用户保存后 `/exit` 退出，重新运行 `claude`，再让它复述任务说明。对照你写的检查。

5. 在源代码管理面板看：`CLAUDE.md` 和 `协作记录/` 下三个文件标 `U`。点开 `协作记录/任务说明.md`，右侧“打开更改”视图里整篇是绿色，因为它是新文件。

6. 让它提交（第二句话）。纯手写的提交，说明写一行主题就够。

### 可以对 Claude Code 说的话

第一句：

```txt
读一遍 协作记录/任务说明.md 和 CLAUDE.md，用四行告诉我：要产出什么文件、有哪些约束、自检要查什么、项目规则有哪几条。只读，不要改任何文件。
```

第二句：

```txt
把这轮改动提交，提交说明写“任务说明与项目规则”。执行前先告诉我会提交哪些文件。
```

### ✅ 自查：第二步

- `协作记录/任务说明.md` 六要素齐全；“格式”和“自检”两项与 `口径与要求/简报要求.md` 一致；输出路径是 `简报成品/简报.html`。
- `CLAUDE.md` 在项目根目录，文件名不是 `CLAUDE.md.txt`；“文件约定”里每个文件夹一行，名字和你建的一致。
- 它复述的内容和你写的对得上。
- `git status` 干净；`git log --oneline` 有 2 行，最新一行在最上面。

## 第三步：跑出初版，看清改动再提交

### 学生做什么

1. 复制 `协作记录/任务说明.md` 代码块里的全部文字，粘贴给 Claude Code。它应先回复计划，不是直接写文件。逐条看：
   - [ ] 它读到的材料和你放进去的一致吗？数据类看行数、列名；课程章节类看它列出的章节标题、小节和页数。
   - [ ] 三张图打算画什么？每张图依据哪份材料的哪部分（数据表的哪几列，或教材的哪一节）？
   - [ ] 它打算把成果写到 `简报成品/简报.html` 吗？有没有打算改原始资料文件夹？
   - [ ] 它有没有说图怎么画（内嵌 SVG 还是引用网上的图表库）？没说就问。
   - [ ] 它问了问题吗？问了就先答，答案是你的判断，记进决策日志。

   计划有问题就指出来让它改；没问题再放行（第一句话）。

2. 执行中它会请求批准。写文件看清路径是 `简报成品/简报.html`；路径在原始资料文件夹里的一律拒绝。它想运行命令算数（例如一段 Python），看得懂、只是读取和计算的可以允许，看不懂就拒绝让它先解释，拒绝后它会改为逐条手算。

3. 完成后**自己**在浏览器打开 `简报成品/简报.html`（在文件上右键“打开方式 → 浏览器”，或把文件拖进浏览器窗口）。翻一遍：几页、几张图、每张图有没有标题、说明和来源一行；数字、定义、公式旁边有没有标来源文件。

4. 试一次断网：关掉 Wi-Fi 再刷新页面，图还在吗？图消失了，说明它引用了网上的图表库，见《常见问题》第 18 条，让它改成内嵌后再继续。不方便断网的，让它检查文件里有没有 `http` 开头的外部引用（第二句话）。

5. 让它报告这一轮改了什么、先不提交（第三句话）。在源代码管理面板点开 `简报成品/简报.html`：新文件整篇是绿色。命令行的 `git diff` 不显示还没被记录过的新文件，这是正常的；到第四步修订时，`git diff` 才会红绿两色。

6. 提交（第四句话）。这是 AI 参与的提交，建议的写法是一行主题加两段正文：“AI 做了什么”和“我改了什么／为什么接受或拒绝”。你这一轮没有改它的东西也可以写：写你检查了什么、为什么接受。这样三个月后回看历史，能分清哪些是 AI 的、哪些是你的判断。

### 可以对 Claude Code 说的话

第一句（计划看过之后）：

```txt
计划可以，开始执行。
```

第二句（检查外部引用）：

```txt
检查 简报成品/简报.html 里有没有引用网上的文件：http 或 https 开头的 script、link、img。有的话逐条列出来，先不要改。
```

第三句（提交前先报告）：

```txt
先不要提交。用 git status 和 git diff 的结果告诉我：这一轮新建或修改了哪些文件，每个文件改了什么。
```

第四句（建议的两段式提交说明，横线处换成你的话）：

```txt
把这轮改动提交。提交说明按下面写，第一行是主题，空一行后是两段正文：

简报初版：____ 页、____ 张图

AI 做了什么：____

我改了什么／为什么接受或拒绝：____
```

### ✅ 自查：第三步

- `简报成品/简报.html` 存在，浏览器能打开，断网后图仍显示；页数建议 6–8 页左右，至少 3 张图，每张图有标题、说明、来源。
- 你没有批准过任何改动原始资料文件夹的操作。
- `git status` 干净；`git log --oneline` 有 3 行。
- 让它显示最近一次提交的完整说明（它会跑 `git log -1`），能看到主题一行；按建议写了两段的，两段正文也在。

## 第四步：对照原始材料核一处内容，写修改意见，出修订版

### 学生做什么

1. 挑一处内容，回到原始材料核一遍。数据类（选 ③ 和选 ① 的数据主题）挑一张图，把它的数字和数据表核一遍，建议挑涉及月薪的那张：用 Excel 或 VS Code 打开 `岗位样本数据/实习岗位样本_2026春.csv`，用筛选功能按图上的分类筛出行数，和图上的数字比。课程章节类（选 ②）挑一处定义、公式或例题，翻到教材或老师课件的原文比对：措辞、符号、条件、数值是否一致，有没有它自己补的内容。

2. 核之前先读 `口径与要求/` 里的文件。选 ③ 读 `口径说明.md`，两处要看仔细：月薪区间里的“面议”怎么计；编号不同、其余字段相同的岗位怎么计。图上的数字和你按口径数出来的不一样，就是发现。选 ①② 读 `简报要求.md` 里关于出处的那条：每个数字、定义、公式都要能指到来源文件，指不到的就是发现。

3. 让它列出这处内容的依据（第一句话），和你自己核的比。它说的“已核对”不算数，你核的才算。

4. 打开 `协作记录/检查记录.md`，把发现写进去。每条修改意见写清五件事：**位置 → 问题 → 原始依据 → 修改要求 → 复查方式**。没发现错误的，不要编一个；提一项明确的新要求走一轮修订，例如“每张图下方加一行说明，写明依据的材料文件和纳入、排除的范围”。

5. 发修改意见（第二句话）。这次直接改 `简报成品/简报.html`，不另存新文件。

6. 改完先看 diff，再提交：源代码管理面板里 `简报成品/简报.html` 标 `M`，点开是红绿两色，红是删掉的行，绿是加上的行，只看这两种颜色。`协作记录/检查记录.md` 也标 `M`。确认改动在你要求的位置，再让它提交（第三句话）。

### 可以对 Claude Code 说的话

第一句（数据类）：

```txt
把 ____ 这张图每个数字的计算过程列出来：按什么筛选、数了多少行、月薪区间为“面议”的岗位怎么处理的、重复发布的岗位怎么处理的。只回答，不要改文件。
```

第一句（课程章节类）：

```txt
第 ____ 页的 ____（定义／公式／例题）依据的是哪份文件的哪一节？把原文和课件里的写法并排列出来，指出有没有你自己补的内容。只回答，不要改文件。
```

第二句（横线处换成你的检查记录）：

```txt
请修改 简报成品/简报.html，直接改这个文件，不要另存：
1. 位置：____ 这张图（或第 ____ 页的 ____）。问题：____。原始依据：____ 文件的 ____（列名、条款号或章节）。修改要求：____。复查方式：____。
改完先不要提交，告诉我改了哪些行。
```

第三句：

```txt
把这轮改动提交。提交说明第一行写主题，空一行后分两段：“AI 做了什么”写你改了哪里、从什么改成什么；“我改了什么／为什么接受或拒绝”这一段留给我，内容是：____
```

### ✅ 自查：第四步

- `协作记录/检查记录.md` 里至少一条修改意见，五件事齐全。
- 浏览器刷新后，那处内容和你按原始材料核出来的一致；图下能看到依据的材料文件和纳入、排除的范围。
- `git diff` 或面板里，改动集中在你指出的位置，没有顺手改别的地方。
- `git status` 干净；`git log --oneline` 有 4 行；最新一条说明是一行主题，按建议写的话还有两段正文。

## 第五步：试一次改坏，再退回来

这一步故意做一次不满意的改动，练两种回退：撤销一次已提交的改动（`git revert`），丢弃一处没提交的改动（`git restore`）。

### 学生做什么

1. 让它做一处大改动：换一套配色，或把三张图合成一张（第一句话）。改完在浏览器刷新看效果，然后提交（第二句话）。这一条提交的主题写“试改：____”。

2. 比较新旧两版。旧版在时间线里：在 VS Code 打开 `简报成品/简报.html`，展开资源管理器底部的“时间线”，点上一条提交，能看到这次改动的对照。决定要不要退回。手册假定你决定退回；觉得新版更好也可以留着，在决策日志写明理由，然后另找一处小改动来练回退。

3. 回退前先让它报告（第三句话）：它会怎么做、执行什么命令、动哪些文件。合格的回答是 `git revert` 加上一条提交的哈希，并说明会新增一条提交、历史保留。它提出 `git reset --hard` 的，拒绝，告诉它“不要 reset，用 revert”。

4. 确认后放行（第四句话）。WorkBuddy 中发送这句确认后才让它执行；Claude Code 可能另请你批准 `git revert`，有的版本会再问一次提交说明。

5. 刷新浏览器：简报回到试改之前的样子。`git log --oneline` 多了一行“Revert ...”或你指定的主题，试改那一条仍然在，这就是“历史保留”。

6. 再练 `restore`：**自己**在 VS Code 里打开 `协作记录/任务说明.md`，在末尾随便加一行字，保存。源代码管理面板里它标 `M`，点开能看到那一行是绿色。现在丢弃这处改动，同样让 Claude Code 做：先让它报告（第五句话），合格的回答是 `git restore 协作记录/任务说明.md`，并提醒你这一步不可恢复。确认后放行。面板上的“放弃更改”本课不用。

   `git restore` 丢掉的改动找不回来，所以先报告、再执行。

   WorkBuddy 报告的路径和风险无误后，明确回复“确认，只丢弃 协作记录/任务说明.md 这处未提交的教学练习改动，按你报告的 git restore 执行，不动其他文件”，再核对状态。不要把“先不要执行”的报告指令当成已经完成回退。

### 可以对 Claude Code 说的话

第一句（二选一）：

```txt
把 简报成品/简报.html 换一套配色，页面底色和图表颜色都换，直接改这个文件。改完先不要提交，告诉我改了什么。
```

```txt
把 简报成品/简报.html 里的三张图合并成一张放在同一页，直接改这个文件。改完先不要提交，告诉我改了什么。
```

第二句：

```txt
把这轮改动提交，主题写“试改：换配色”，正文一段写你改了什么。
```

第三句（回退前先报告）：

```txt
我想撤销上一次提交“试改：换配色”，回到它之前的样子，但历史记录要保留。先告诉我你会怎么做、会执行什么命令、会动哪些文件，先不要执行。
```

第四句：

```txt
可以，按你说的执行。提交说明写“撤销：换配色的改动”，正文写一句为什么退回：____
```

第五句（丢弃未提交的改动）：

```txt
协作记录/任务说明.md 里有一处没提交的改动，我不要了，想让它回到上次提交的样子。先告诉我你会执行什么命令、这个操作能不能恢复，先不要执行。
```

### ✅ 自查：第五步

- `git log --oneline` 有 6 行：从上到下是撤销、试改、修订、初版、任务说明、初始化。试改那一条没有消失。
- 浏览器里的简报和第四步结束时一样。
- `协作记录/任务说明.md` 末尾那行字没有了；`git status` 干净。
- 你能说出两次回退的区别：`revert` 针对已提交的改动，新增一条提交，历史保留；`restore` 针对没提交的改动，改动直接消失，不可恢复。
- 它两次都先报告、经你确认才执行；`git reset --hard` 没有出现过。

## 第六步：写决策日志和项目入口，最终提交

### 学生做什么

1. 打开 `协作记录/决策日志.md`，至少写三条：接受初版时你检查了什么；修订时你按什么依据改了哪处内容；试改为什么退回。每条都有“依据”。

2. 把 `01_数据简报/模板/README_模板.md` 复制到项目根目录，改名为 `README.md`。里面三节要填：
   - **这个项目做过什么**：让它把 `git log --oneline` 念成一段话（第一句话），你改成自己的话写进去。一条提交线念下来就是项目日志。
   - **版本记录在哪里**：在项目文件夹里的隐藏目录 `.git/`，和文件在同一块硬盘上，所以它不是备份；复制项目文件夹时要连 `.git/` 一起。
   - **怎样恢复**：看历史用 `git log --oneline`；取回某个文件的旧版本用 `git restore --source=<哈希> -- <文件>`；撤销一次提交用 `git revert <哈希>`。这三句抄进去，换电脑的你也能看懂。

3. 最终提交（第二句话）。

4. 让它列出被记录的全部文件（第三句话），核对没有原始资料文件夹，没有 PDF、PNG。

**同伴互查：** 请旁边的同学只看你项目里的 `README.md`，说出这个项目改过几版、哪一版被退回、怎样取回退回前的版本。一分钟内说出来，交接就写清楚了。

### 可以对 Claude Code 说的话

第一句：

```txt
读一下 git log --oneline，把每一条提交连成一段话，告诉我这个项目从头到尾做过什么。只回答，不要改文件。
```

第二句：

```txt
把这轮改动提交，提交说明写“交接：决策日志与项目入口”。执行前先告诉我会提交哪些文件。
```

第三句：

```txt
列出版本记录里跟踪的全部文件，再显示 git log --oneline。只读。
```

### ✅ 自查：第六步

- `README.md` 三节都有内容；`协作记录/决策日志.md` 至少三条，每条有依据。
- `git status` 干净；`git log --oneline` 有 7 行。
- 被记录的文件只有 `.md`、`.html` 和 `.gitignore`；原始资料文件夹不在其中。
- 同学只看 `README.md` 就能说出退回的是哪一版、怎样取回。


## 回看自己的版本记录与协作过程

做完六步，项目里有两条记录：Git 里的版本记录，和 Claude Code 里的对话。两条都能回看，下面两小节是怎么看、怎么导出的教程。

### 在 VS Code 里看 Git 历史图

源代码管理面板里有一个“源代码管理图”（Source Control Graph，VS Code 内置，译名以屏幕为准）：打开面板后，它在“更改”列表下方，折叠着的话点标题展开；也可以在面板右上角的“…”菜单里找“查看 → 源代码管理图”一类的入口。

能看到什么：每条提交一行，从上到下由新到旧，一行里有提交说明的主题、作者和时间，左侧一条竖线把提交串起来（本周没有分支，所以是一条直线）。点一条提交，右侧会列出这次提交改了哪些文件；再点某个文件，打开的是那次改动的前后对照，红是删掉的、绿是加上的。第五步的撤销提交在这里能看到它改的文件和试改那条正好相反。

看单个文件的历史用“时间线”：在资源管理器里选中文件（例如 `简报成品/简报.html`），展开资源管理器底部的“时间线”，列出的是这个文件被哪几次提交改过；点一条，看那次的前后对照。“源代码管理图”按提交看全项目，“时间线”按文件看，两个都是看，不改东西。

### 导出与 Claude Code 的交互记录（以下命令不适用于 WorkBuddy）

Claude Code 会话里输入 `/export`，会打开一个菜单，两个选项：复制到剪贴板，或保存为纯文本文件；导出的是这次会话的全部消息和工具输出，以可读文本呈现。要跳过菜单直接写进指定文件，在命令后面带文件名：

```txt
/export 协作记录/对话记录_20260922.txt
```

建议就这样存进 `协作记录/`，文件名带日期；一次会话做了几件事的，在文件名里加上，例如 `对话记录_20260922_初版与修订.txt`。它是 `.txt`，白名单 `.gitignore` 不放行，所以不会进仓库；想让它进仓库就把后缀写成 `.md`。

之前的会话（例如第二步 `/exit` 之前那一段）用 `/resume` 找回：运行 `claude` 后输入 `/resume`，从列表里选那次会话，恢复后 `/export` 同样可用。同一个项目文件夹里做过几次会话，就找回几次、各导出一份。

一点注意：对话记录里会有你粘贴过的材料内容，选 ② 的同学导出文件里可能含老师课件的原文，这份文件和课程资料一样只放本机，不外传。


## 会话回退与项目版本的区别（Claude Code）

Claude Code 自带一种回退：输入 `/rewind`，或在输入框为空时按两次 `Esc`，会打开一个菜单，可以选“只恢复代码”“只恢复对话”或“两者一起”，回到这次会话里某一句话之前的状态。它每次你发消息前自动记一个检查点，保留最近 100 个。

它和 Git 的分工：

| | `/rewind` | Git |
| --- | --- | --- |
| 管什么 | 这次会话里 Claude 用编辑工具改过的文件 | 项目里所有被记录的文件 |
| 不管什么 | 它用命令删掉、移动的文件；你自己在 VS Code 里改的；上一次会话改的 | `.gitignore` 挡在外面的文件；没提交过的改动 |
| 保留多久 | 会话结束后约 30 天 | 一直在，直到你删掉 `.git/` |
| 用在哪 | 刚让它改了一轮，马上后悔 | 第五步那样的正式回退，以及交接 |

官方文档的原话是“不替代版本控制”。这里练的每一次提交，都是为了在会话之外留下能回去的地方。


## 做完后检查：项目里应有的文件

数据简报练习（以选 ③ 为例，选 ①② 的文件夹名换成你自己起的）：

```txt
实习岗位简报/                  项目文件夹，在这里启动 claude
├── .git/                      版本记录（隐藏目录），复制项目时要带上
├── .gitignore                 白名单，最后一行是原始资料文件夹名
├── README.md                  项目入口：做过什么、版本记录在哪、怎样恢复
├── CLAUDE.md                  项目规则，文件约定里每个文件夹一行
├── 岗位样本数据/              数据表与两份背景，未改动，不进仓库
├── 口径与要求/                口径说明、简报要求
├── 简报成品/                  简报.html（同一个文件，历史由 Git 保管）
└── 协作记录/                  任务说明.md、检查记录.md、决策日志.md
```

- `git log --oneline` 至少 7 行，能念成一段话；其中一条是撤销。
- 被记录的文件只有 `.md`、`.html`、`.gitignore`，没有原始资料文件夹，没有 PDF、PNG。
- `git status` 干净。
- 简报里的数字、定义、公式旁边标了来源文件；选 ② 的没有整段复制老师课件的原文。
