跳到主内容

course materials · 2026 秋季本科

上机材料:数据简报与投资研报的版本记录

Week 3 · 2026-09-22 · 上机材料

返回本周材料

先下载材料包,再跟做:开启版本记录、白名单 .gitignore、六要素任务说明、先看差异再提交、检查修订、试改与撤销、交接;第二个练习用投资研报做分步提交与 revert;每步后面附自查。

W03 学生材料包

ZIP · 约 110 KB

解压到桌面或下载文件夹,不要解压到项目文件夹里面;保留一份不动,改坏了可以重新复制。含数据简报、投资研报、迁移主题与回退练习四个材料包。

下载材料包
本页目录

本周两个练习。第一个是主任务:建一个项目文件夹,用你选定的材料做一份含图表的 HTML 简报,边做边用 Git 记录版本。做完之后,这个项目里会有:几个按内容命名的子文件夹、一份任务说明和项目规则、一份能在浏览器里打开的简报,以及一条能念出来的版本记录:初始化 → 任务说明 → 初版 → 修订 → 试改 → 撤销 → 交接。第二个练习是投资研报的 Git 管理:拿到一个已有初稿的项目,自己开启版本记录,分步提交,再用 revert 撤销其中一步,见本手册“第二个练习”。

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

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

开始之前

配置 Git

打开终端(Windows 用 Git Bash 或 PowerShell,Mac 用“终端”),逐条运行:

git --version
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global init.defaultBranch main
git config --global core.quotepath false
  • 第一条应显示 git version 2.xx。显示“不是内部或外部命令”的,见《常见问题》第 2 条。
  • 后四条运行后没有输出就是成功。名字和邮箱写进每一条版本记录,用来标明“这条记录是谁写的”;中英文都行。
  • 第四条让新建的仓库默认叫 main;第五条让 git status 里的中文文件名正常显示,不然会显示成 "\346\225\260\346\215\256..."。本周的文件夹和文件都用中文名,这一条不能省。

运行 git config --global --list,能看到刚才设的四项即可。

先定材料

三选一,定了再往下走。三种材料在项目里放的位置不同,原始资料文件夹的名字也随材料起(起名原则见第一步)。

选项原始资料文件夹放什么口径与要求/ 放什么第四步核什么
① 自选主题与材料你自己找的资料、数据(文件夹名按内容起,例如 校园消费数据/材料包 01_数据简报/口径与要求/简报要求.md;有统计口径的自己写一份口径说明一张图的数字,或一处定义、结论的出处
② 某门课的一章,做讲解课件老师的课件、教材章节、你的笔记(文件夹名例如 课程原始资料/同上的 简报要求.md一处定义、公式或例题是否与教材一致
③ 实习岗位样本材料包材料包 01_数据简报/岗位样本数据/ 里的数据表和两份背景(文件夹名 岗位样本数据/材料包 01_数据简报/口径与要求/ 里的口径说明和简报要求一张图的数字;口径说明里“面议”和“重复发布”两条

隐私与版权。 课程资料是老师的材料,只放在你自己电脑的原始资料文件夹里。白名单 .gitignore 把这个文件夹挡在仓库外,所以它不会进版本记录;成品课件里也不要整段复制老师课件的原文,引用要点并标出来源文件即可。选 ① 的资料同样只放本机。

材料包与项目文件夹

  • 下载本周材料包,解压到桌面或下载文件夹。不要解压到项目文件夹里面,后面按步骤把需要的文件复制进去。材料包保留一份不动,改坏了可以重新复制。
  • 项目文件夹放在哪里由你自己定:桌面、文档,或第 1 周建的练习文件夹都可以。一个任务一个项目文件夹,在项目文件夹里启动 claude。本手册用 实习岗位简报/ 作示例名。
  • 第 1 周的环境能用:在任意文件夹运行 claude 能对话。
材料包目录用途用在哪一步
01_数据简报/岗位样本数据/数据表 实习岗位样本_2026春.csv,两份背景资料(选 ③ 用)第一步
01_数据简报/口径与要求/口径说明.md(怎么数,选 ③ 用)、简报要求.md(成品长什么样,三种都用)第一、二、四步
01_数据简报/模板/任务说明、CLAUDE.md.gitignore 白名单、检查记录、决策日志、README 的模板第一、二、四、六步
01_数据简报/材料包说明.md材料包的总说明随时
02_投资研报/第二个练习:已有初稿的研报项目,自己开启版本记录、分步提交、revert第二个练习
03_迁移主题/换一个主题再做一遍:社团活动与经费进阶
04_回退练习/两个现成的小仓库:只恢复误删的一节;说出四种文件状态进阶

两种看法,一个做法

看状态、看差异、看历史有两种看法;所有改动仓库的动作(开启版本记录、提交、回退)都让 Claude Code 做、由你审批。本课不用面板做提交、暂存、放弃更改。

路径用来做什么怎么打开
VS Code 源代码管理面板看状态、看差异、看历史用 VS Code“文件 → 打开文件夹”打开项目文件夹;左侧活动栏点“源代码管理”图标,或按 Ctrl+Shift+G(Mac 也是这个组合)。资源管理器底部的“时间线”看单个文件的历史
三条只读命令git status(现在改了什么)、git log --oneline(提交历史,一行一条)、git diff(改了哪些行)不要求手打。你对 Claude Code 说“看看改了什么”“看看历史”“看看差异”时,它在后台跑的就是这三条,会把结果念给你。手册里凡是写到这三条命令的地方,都是让它跑、你看结果,命令名留着供你对照它的报告
Claude Code开启版本记录、提交、回退在项目文件夹里直接运行 claude,默认就是手动逐次审批:git commitgit revert 这类会改东西的命令每次都会先问你;git statusgit loggit diff 它直接跑

面板的译名以你屏幕上显示的为准:本手册写“源代码管理”“打开更改”“时间线”“源代码管理图”。面板里的“初始化仓库”“暂存更改”“提交”“放弃更改”按钮本课不用;看到它们不要点,让 Claude Code 做、你审批,练的是看它的报告再放行。

同一个项目文件夹不要同时开两个 Claude Code 会话,两个会话会互相覆盖对方的改动。

每一步后面有“✅ 自查”,写这一步做完应看到什么,包括 git log --oneline 应有几行、git status 应是什么样。自查里的命令都让 Claude Code 跑并把结果念给你,或在面板里看。多提交了一次没有关系,行数只多不少。

术语对照:中文、英文、在哪里会看到

Claude Code 的回报、git status 的输出和 VS Code 面板里会出现英文术语,对照着认一遍,以后看到不慌。

中文英文在哪里会看到
仓库repository,简称 repoClaude Code 回报“已初始化仓库”;.git/ 就是仓库本身
工作区working directory/working tree你正在改的文件夹本身
暂存区staging area/index面板“暂存的更改”(Staged Changes);git status 里“Changes to be committed”
提交、提交点commit历史图里的每一个点;Claude Code 回报“已提交 a1b2c3d
哈希hash提交后面那串 7 位字母数字,是提交的编号
当前位置HEADgit status 第一行;历史图里标记最新提交
分支、主线branch、maingit status 第一行“On branch main”
状态statusgit status;面板“更改”列表
差异diffgit diff;面板点文件“打开更改”看到的红绿对照
历史log/historygit log --oneline;面板“源代码管理图”(Source Control Graph)与“时间线”(Timeline)
未跟踪untrackedgit status 里“Untracked files”;面板文件后标 U
已修改modifiedgit status 里“modified:”;面板文件后标 M
已暂存staged面板“暂存的更改”一组
被忽略ignored.gitignore 挡住的文件;面板里不出现
丢弃更改restore/discard changes回退第一层;面板叫“放弃更改”(本课不用面板做)
取回旧版本restore --source回退第二层
撤销提交revert回退第三层;历史里多一条 Revert "…"
开启版本记录init(git initClaude Code 回报“已初始化空仓库”
放进暂存区add/stageClaude Code 请你批准 git add;面板“暂存更改”按钮(本课不用面板做)
提交commit(git commit -m "说明"Claude Code 请你批准 git commit
远端、推送、拉取、克隆remote、push、pull、clone把仓库放到 GitHub 一类远端时才用到,本课不涉及;看到 git push 的提示不用理
工作树worktree同一仓库在另一个文件夹再放一份工作区,以后详讲
检查点checkpointClaude Code 会话自带的回退点(/rewind),不是 Git 的提交

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

学生做什么

  1. 新建项目文件夹(示例名 实习岗位简报/),用 VS Code“文件 → 打开文件夹”打开它。在 VS Code 终端里(菜单“终端 → 新建终端”)启动:

    claude
    

    不带参数,默认就是手动逐次审批。界面底部不显示 accept editsplanauto 一类模式提示就是手动审批;显示了就按 Shift+Tab 切换到不显示为止。

  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. 让 Claude Code 把 gitignore_白名单.txt 改名为 .gitignore(第二句话)。打开看一眼,去掉开头那行复制说明后,内容应是这七行,最后一行写你自己的原始资料文件夹名

    # 只记录原稿: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 说的话

第一句(文件夹名换成你定的):

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

第二句:

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

第三句:

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

第四句:

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

✅ 自查:第一步

  • 项目文件夹里有原始资料文件夹(选 ③ 是 岗位样本数据/,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. 保存后 /exit 退出,重新运行 claude,让它复述任务说明(第一句话),对照你写的检查。

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

  6. 让它提交(第二句话)。纯手写的提交,说明写一行主题就够。

可以对 Claude Code 说的话

第一句:

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

第二句:

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

✅ 自查:第二步

  • 协作记录/任务说明.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 说的话

第一句(计划看过之后):

计划可以,开始执行。

第二句(检查外部引用):

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

第三句(提交前先报告):

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

第四句(建议的两段式提交说明,横线处换成你的话):

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

简报初版:____ 页、____ 张图

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,再提交:源代码管理面板里 简报成品/简报.htmlM,点开是红绿两色,红是删掉的行,绿是加上的行,只看这两种颜色。协作记录/检查记录.md 也标 M。确认改动在你要求的位置,再让它提交(第三句话)。

可以对 Claude Code 说的话

第一句(数据类):

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

第一句(课程章节类):

第 ____ 页的 ____(定义/公式/例题)依据的是哪份文件的哪一节?把原文和课件里的写法并排列出来,指出有没有你自己补的内容。只回答,不要改文件。

第二句(横线处换成你的检查记录):

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

第三句:

把这轮改动提交。提交说明第一行写主题,空一行后分两段:“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. 确认后放行(第四句话)。它会请你批准 git revert;有的版本会再问一次提交说明。

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

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

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

可以对 Claude Code 说的话

第一句(二选一):

把 简报成品/简报.html 换一套配色,页面底色和图表颜色都换,直接改这个文件。改完先不要提交,告诉我改了什么。
把 简报成品/简报.html 里的三张图合并成一张放在同一页,直接改这个文件。改完先不要提交,告诉我改了什么。

第二句:

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

第三句(回退前先报告):

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

第四句:

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

第五句(丢弃未提交的改动):

协作记录/任务说明.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 说的话

第一句:

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

第二句:

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

第三句:

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

✅ 自查:第六步

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

第二个练习:投资研报的 Git 管理

这个练习反过来:不是从空文件夹开始,而是拿到一个已经有初稿的月度策略研报项目(宏观与行业数据为真实公开数据,配置判断为练习设定),自己给它开启版本记录,把初稿存档。然后按项目里 CLAUDE.md 的规则做两件事,分开提交:更新宏观数据;下调新能源板块评级。用 git log --oneline 看历史,读一次 diff。接着收到一份“补贴政策延续”的通告,评级下调的依据不成立了,用 git revert 只撤销那一条提交,宏观数据的更新不受影响,历史里两条都在。

与数据简报练习的对照:那边的 .gitignore 是白名单(先挡一切,再放行 .md.html),这边是黑名单(默认记录一切,逐条列出不记录的原始数据文件夹 宏观与行业数据/、交付稿文件夹 交付稿/ 等)。两种写法都让原始数据留在仓库外,只记录你和 AI 一起改出来的原稿;哪种合适,看你更容易数清“该记录的”还是“不该记录的”。项目文件夹的名字也照第一步的原则起:宏观与行业数据/ 只读不进仓库,研报草稿/ 由 Git 跟踪,交付稿/ 不进仓库。

步骤、可以说的话和每步自查都在 材料包/02_投资研报/练习说明.md,照它做,另建一个项目文件夹,不和数据简报混在一起。做完 git log --oneline 应有 5 行,其中一条是撤销。


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

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

在 VS Code 里看 Git 历史图

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

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

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

导出与 Claude Code 的交互记录

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

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

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

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

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


进阶

练习材料要求
只恢复误删的一节材料包/04_回退练习/练习说明.md,解压 回退练习.zip 里的 restore-lab/工作区里两个文件都有未提交的改动:一个被误删了一节,一个是新草稿。用 git restore --source=<哈希> -- <文件> 只恢复那一节,不碰另一份草稿
说出四种状态同上,status-lab/四个文件分别处于已修改未暂存、已暂存、新建未跟踪、被忽略。对照面板标记和 git status 说出各在哪个位置
换一个主题再做一遍材料包/03_迁移主题/社团活动与经费的数据表,12 个社团 × 12 个月。另建一个项目文件夹(示例名 社团经费简报/,原始资料文件夹 社团经费数据/),从第一步做起;口径说明里有一处缺报月份的处理规则,第四步在这里核

回退练习的两个仓库自带 .git/,解压后不要新建仓库,直接在里面启动 Claude Code 或打开面板看。这两个仓库是预先做好的,里面的文件夹名不按本手册的原则起,不用改。

会话回退与项目版本的区别

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

它和 Git 的分工:

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

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


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

数据简报练习(以选 ③ 为例,选 ①② 的文件夹名换成你自己起的):

实习岗位简报/                  项目文件夹,在这里启动 claude
├── .git/                      版本记录(隐藏目录),复制项目时要带上
├── .gitignore                 白名单,七行,最后一行是原始资料文件夹名
├── README.md                  项目入口:做过什么、版本记录在哪、怎样恢复
├── CLAUDE.md                  项目规则,文件约定里每个文件夹一行
├── 岗位样本数据/              数据表与两份背景,未改动,不进仓库
├── 口径与要求/                口径说明、简报要求
├── 简报成品/                  简报.html(同一个文件,历史由 Git 保管)
└── 协作记录/                  任务说明.md、检查记录.md、决策日志.md
  • git log --oneline 至少 7 行,能念成一段话;其中一条是撤销。
  • 被记录的文件只有 .md.html.gitignore,没有原始资料文件夹,没有 PDF、PNG。
  • git status 干净。
  • 简报里的数字、定义、公式旁边标了来源文件;选 ② 的没有整段复制老师课件的原文。

第二个练习(投资研报)在另一个项目文件夹里:git log --oneline 5 行(做了收尾是 6 行),其中一条是撤销;git ls-files 里没有 宏观与行业数据/交付稿/研报草稿/ 里的宏观数据是 3 月版、新能源一行是“维持超配”且理由提到补贴延续。

要记住的四件事

  1. 未提交的找不回,同一块硬盘不是备份。 每完成一个能说清的目标就提交一次;.git/ 和文件在一起,备份要另外做。
  2. 提交前先让它报告,再放行。 git statusgit loggit diff 它直接跑;git commitgit revertgit restore 先说清会做什么、动哪些文件,你确认后再执行。
  3. 只记录原稿,文件夹名要能说明自己。 白名单 .gitignore 放行 Markdown 和 HTML,原始资料文件夹与导出物不进仓库;git status 里看不到被挡的文件才算对。文件夹按内容起名,看名字就知道只读还是可改、进不进仓库。
  4. 回退分三层,reset --hard 不用。 restore 丢弃没提交的改动(不可恢复);restore --source 取回某文件的旧版本;revert 用新提交抵消旧提交,历史保留。/rewind 管会话,Git 管项目。