金融AI智能体设计与应用 · 第 7 次课 · 下午 01 — 23
序 · 开场 中山大学岭南学院 · 张一帆
+ +
01序 · 开场
金融硕士选修课 · 第 7 次课 · 下午 · 2026-10-28 · 东2-304

版本控制
与团队协作

张一帆
中山大学岭南学院 · 金融 AI 智能体设计与应用
AI岭南学院
0为什么要有记录

三个人改过一份研报,结论是谁改的要答得出

一份行业研报发给客户前经过三个人的手。核对口径的人改了行业分类,写正文的人调了两处措辞,署名的人把评级从增持改成中性。

客户隔周问起下调的依据。手上只有一份 研报_v3_最终.docx,前面两版早被覆盖了。

要答的只有文件名有提交记录
谁改的答不出作者一栏写着名字
什么时候只显示最后一次修改每条提交带时间,精确到分
改之前是什么上一版已被覆盖上一个快照里就是原句
复核靠的不是再问一遍改了什么,是打开记录就能指出那一行。
git-scm.com/docs/git-log · code.visualstudio.com/docs/sourcecontrol/overview
0今天怎么走 · 三个练习

八站一条线,三个练习各走一段

你的电脑 前六次课的成果都在这里 你和组员 几个人改同一条主线 远端仓库 存一次快照 比出差异 挑着存 连成历史能退回 分出一条线 合回主线 推到远端 别人拉下来 存下那一刻的项目 两份快照一减 只放挑中的 改坏了能退 各改各的 改完在路口碰面 别人手上也有 克隆一次全到手 1234 5678 练习一 · 一个人把前四站走一遍 手上有一条提交线和一个 PR 开 stu/ 分支 推上去,发 PR 练习二 · 小组走 5–8 站,再上线 手上有小组仓库和网址 练习三 · 换成腾讯文档,同一套原理再走一遍 手上有全组同写的项目说明,网页文字从它来
练习三把全组写的文字填进练习二的网页。下课时每组手上有一个能打开的网址。
I背景 · 版本管理为什么重要

版本管理管的是复核、交接、退回

复核

有人问起某一句,指得出是谁、哪天改的,改之前写的是什么。

交接

人走了,接手的人从第一条记录读起,看得懂它怎么变成这样。

退回

今天改坏了,退回昨天能用的那一版,别的改动不跟着丢。

AI 进来以后

Claude Code 几分钟改完一轮,改动不是你亲手敲的,过后你也说不清它动了哪里。

AI 改得越快,越要有一份不靠记忆的记录。
I背景 · 手动命名模式

大家都会的办法,每改一轮另存一份

毕业论文文件夹里排着论文、论文_改、论文_终稿、论文_终稿_导师意见、论文_最终版、论文_最终版_打死不改、论文_最终版_打死不改(1) 七份文件,学生挠头问交上去的是哪一份
怎么做

改之前复制一份,
名字后面加 _改、_终稿、_最终版。

靠什么

靠人记得另存。
哪天忘了,上一版就被盖掉。

缺什么

看不出这一版改了哪几句、
为什么改、谁改的。

一个人管一篇论文还凑合。换成几个人、一串代码文件,就撑不住了。
I背景 · 现实例子 · 手动命名

论文改到第 22 版,同事改的还得手工合

研究生和导师来回改论文

PhD Comics 第 1531 号 FINAL.doc · Jorge Cham · 2012

九格漫画里,文件名一路变成这样。

FINAL.doc! FINAL_rev.2.doc FINAL_rev.6.COMMENTS.doc FINAL_rev.8.comments5.CORRECTIONS.doc FINAL_rev.18.comments7.corrections9.MORE.30.doc FINAL_rev.22.comments49.corrections.10. #@$%WHYDIDICOMETOGRADSCHOOL????.doc

发给财务同事填一天

廖雪峰《Git 教程》第二节 · Git 是什么
  1. 用 Word 写长文,怕删掉的段落找不回,一次次另存为。
  2. 一周后想找回那段,记不清在哪个文件里,只能逐个打开。
  3. 有一部分要财务同事填。拷进 U 盘发给她,你自己接着改。
  4. 一天后她传回来,你得回想自己改了哪些,再手工合并。
一个人改,乱在文件名。两个人改,还要手工合并。
phdcomics.com/comics/archive.php?comicid=1531 · liaoxuefeng.com/books/git/what-is-git · 核对 2026-10-28
I背景 · 手动模式碰到代码

一个项目是一串文件,改个名引用就断

周报网页文件夹里 index.html 引用 style.css 和 data.csv,chart.py 读 data.csv;把 style.css 复制改名成 style_v2.css 后,index.html 的引用断开,页面样式乱掉;左下角小机器人抱着一摞文件跑,一轮改了七八个文件

改名后 index.html 还在找 style.css,页面样式就丢了。Claude Code 一轮常改七八个文件,靠改名更跟不上。

Pro Git 评价复制目录、改名加时间的做法,唯一的好处就是简单,但是特别容易犯错。
Pro Git 中文版「起步 - 关于版本控制」git-scm.com/book/zh/v2 · 核对 2026-10-28
I背景 · 现实例子 · 可复核

一篇被预算方案引用的论文,Excel 少选了五行

2010 年

哈佛的 Reinhart 和 Rogoff 在 AER 发表《Growth in a Time of Debt》。用 20 个发达经济体 1946–2009 年的数据,算出公共债务超过 GDP 90% 的那组,平均增长 −0.1%。

被引用

美国众议员 Paul Ryan 主导的预算方案《Path to Prosperity》拿它当高债务伤害增长的证据。

2013 年

麻省大学的研究生 Thomas Herndon 做课程作业复现这篇论文,怎么也算不出原数,写信要来了作者的 Excel 工作表。

打开工作表

求平均的公式只选到第 44 行,应该选到第 49 行。澳大利亚、奥地利、比利时、加拿大、丹麦五国没算进去。

改正以后

连同另外两处方法问题一起改正,超过 90% 那组的平均增长是 2.2%,不是 −0.1%。其中排除部分年份、按国家等权平均两项合计将近 2 个百分点,选错行加抄写错误约 0.4 个百分点。

差距主要来自方法之争。这是一个可复核的例子,不是版本管理出的错。
Reinhart & Rogoff, AER 100(2): 573–578, 2010 · Herndon, Ash & Pollin, Cambridge Journal of Economics 38(2): 257–279, 2014 · BBC News 2013-04-20 · 核对 2026-10-28
Herndon, Ash & Pollin, PERI Working Paper 322(2013-04-15)第 10 页与脚注 9 · 核对 2026-10-28
I背景 · Git 从哪来、有多普及

Git 生于 2005 年,如今几乎人人在用

2002 年起

Linux 内核用商业软件 BitKeeper 管代码。
它对开源项目免费,本身不开源。

2005 年

Samba 的开发者逆向分析它的通信协议。
BitKeeper 公司收回了内核社区的免费授权。

2005-04-07

Linus Torvalds 提交了 Git 的第一个提交。
约十天后,Git 管上了 Linux 内核。

2005-08 前后

Linus 把 Git 交给 Junio Hamano 维护。

93.87%
Stack Overflow 2022 开发者调查,
71,379 人里主要用 Git 的比例。
正在学编程的人里,17.18% 不用版本控制。
1.8 亿+
GitHub 上的开发者账号。
仓库 6.3 亿个,数据来自 Octoverse 2025。
Git 是装在电脑上的软件,GitHub 是存 Git 仓库的网站。
今天之前,我们多半也在那 17.18% 里。本课只讲 Git,练习三会用到在线文档的历史版本。
Pro Git「Git 简史」· Linux Foundation, 10 Years of Git(2015-04-06)· survey.stackoverflow.co/2022 · GitHub Octoverse 2025(2025-10-28)· 核对 2026-10-28
I先看清一次存档里有什么

一次提交,是那一刻整个项目的样子

git log · 最近一次
commit 4a9c1f2 作者 zhangyf 时间 2026-10-28 10:14 说明 加了本周数据抓取脚本,口径照上周那份周报
快照 那一刻整个项目的样子,不是一张改动清单
时间 什么时候存的,精确到分
作者 谁存的,几个人一起改时靠它分责任

坏备注 修改代码 · 更新论文 · 试一下 · 改了简报

好备注 fix: 城市薪资图去掉 12 条面议岗位,按口径只算标注区间的

没变的文件不重复存,提交的代价很小。写一句说明的代价更小。
I存过几次之后,往回看

一条提交线,念下来就是项目日志

终端 · git log --oneline
4a9c1f2 加了本周数据抓取脚本,口径照上周那份周报 7e2d4b9 fix: 城市薪资图去掉 12 条面议岗位 c13a8f0 feat: 简报加一节「样本口径」 58b6e21 chore: 配色改回课程模板 0d94c37 首次提交:简报框架与口径说明
最上面一行最新,往下越旧。前面七位是编号,取回旧版本要指着它。
从最下面一行往上念
这个项目先搭了简报框架和口径说明,接着把配色改回课程模板,然后补了一节样本口径,再去掉 12 条面议岗位,最后接上本周的数据抓取脚本。
交接先读这条线,几分钟就知道项目做过什么。说明只写「修改」,这条线就念不通。
git-scm.com/docs/git-log
I开仓库之前,先定文件清单

一张清单,决定哪些文件进仓库

东西进不进清单 .gitignore 里写一行
原稿与文档进不用写,没列出来的一律照记
规则与技能进不用写,全组共用一套
原始数据不进岗位样本数据/末尾斜杠指整个文件夹
导出物不进*.pdf星号指这个后缀的所有文件,随时能重新生成
密钥与令牌绝不进.env一进历史就删不干净
大家同时在填的表不进*.xlsx每时每刻都在变,放在线文档里
清单存成项目根目录的 .gitignore 文件。少写一行,文件就跟着进了历史。
git-scm.com/docs/gitignore
I动手之前 · 装 Git

装 Git,只有两条配置会拦人

到 git-scm.com 下载 Windows 版,双击安装。向导里只改两处,默认编辑器选 VS Code,PATH 选 Git from the command line and also from 3rd-party software。装完关掉所有终端,再重开一个。

终端
> git --version git version 2.xx.x.windows.1
命令管什么不配会怎样
git config --global user.email "你的邮箱"每条记录留的联系方式提交被拦下,报 Author identity unknown
git config --global init.defaultBranch main新建仓库的主线叫什么主线默认叫 master,推 main 报 src refspec main does not match any
另外三条不拦提交,写法见练习页。敲完没有输出,就是配好了。
git-scm.com · Git for Windows 安装包与官方文档 · git-scm.com/docs/git-config
现在就做 · 第一版两句话,先存下来

先管起来,再存第一版

对它说
把这个文件夹用 Git 管理起来,先别提交。 看看现在有哪些文件会被记进去,超出这个项目的文件不要记。 最后把这批改动提交,备注写「加了本周数据抓取脚本」。
它会跑

第一句跑 git init,再跑 git status,列出会记进去的文件。

第二句跑 git add 和 git commit。

你该看到

文件夹里多出 .git。文件清单不该有别的项目,不该有几百兆的数据。

再问一句「刚才那次提交长什么样」,它把编号、时间、备注列出来。

只读的命令它直接跑,改仓库的每一次都会先问你。有了这一次提交,下一页才有东西可比。
I存过之后,第一件事是读懂差异

红删绿加,读得出改在哪一行

简报成品/简报.html · git diff
@@ -212,4 +212,4 @@
<h2>城市 × 月薪区间</h2>
- <p class="n">样本数:150 个岗位</p>
+ <p class="n">样本数:138 个岗位(去掉 12 条面议)</p>
<svg viewBox="0 0 640 360">
换个文件,同一处改动就看不见
docx、xlsx、图片在仓库里只给一行提示,看不出改在哪。
二进制文件已更改
要留痕的材料写成 Markdown、CSV 或 HTML。
两种颜色是两份快照之间的差。没提交的改动只在文件里,历史里还没有。
git-scm.com/docs/git-diff · code.visualstudio.com/docs/sourcecontrol/overview
I一轮常改好几件事,所以要能挑

挑进中间那一格,才进仓库

工作区 更改
working tree
简报.html · 标题改了一行
数据.csv · 去掉 12 条面议
配色.css · 这次不提交
→ add
暂存区 暂存的更改
index
简报.html · 标题改了一行
数据.csv · 去掉 12 条面议
→ commit
仓库 图表
repository
4a9c1f2
最新的在右端,哪一次都取得回来。
三处全存成一条

以后想撤配色,标题和数据只能跟着退。

挑着存,一件事一条

这次只存标题和数据。配色留在工作区,想好了单独存一条。

提交只认中间那一格,挑剩的留在工作区。一轮里的几件事,能分开存、分开退。
git-scm.com/docs/git-add · git-scm.com/docs/git-commit
I三个位置在 VS Code 里的样子

不敲命令,在面板上点也能提交

VS Code 左侧的源代码管理面板:活动栏上源代码管理图标带数字 1,面板里存储库 mf-test 在分支 stu/zhangyf29 上,更改下面的提交框写着 demo1:一句话换成收盘后整理券商晨报,下面是蓝色的提交按钮,更改列表里只有 index.html demo1 一个文件,右边标 M,行尾有打开文件、放弃更改、加号三个按钮 1 2 3 4
1

活动栏这个图标打开面板,快捷键 Ctrl+Shift+G。角上的数字是改过几个文件。

2

更改这一段就是工作区。M 是改过,U 是新建,点文件名出差异。

3

加号把文件挑进暂存区,面板上多出一段暂存的更改。旁边的弯箭头是放弃更改,点了改动就没了。

4

提交框写一句说明,再点蓝色的提交。提交过的都在面板最下面的图表里,那就是仓库。

差异视图里 demo1/index.html 第 135 行,红底是原来那句把每周组会的录音整理成待办清单,绿底是改后的每天收盘后读三份券商晨报,把观点分歧整理成一页表,标出处

点开 index.html 看到的差异。第 135 行,红的是原句,绿的是改后的。

Claude Code 改完的文件,都会列在这块面板上。先在这里核一遍差异,再提交。
code.visualstudio.com/docs/sourcecontrol/overview(2026-10-28 查阅)
I照着说就行

六句话,六个动作

你说动作它跑什么问不问你
把这个文件夹用 Git 管起来开启版本记录 initgit init,再写 .gitignore问
现在哪些文件改了看状态与差异git status、git diff不问
只提交这两个文件挑范围并提交git add、git commit -m问
显示最近几次记录看历史 loggit log --oneline不问
撤销上一次提交,保留记录撤销一次提交 revertgit revert HEAD问
丢弃这个文件没提交的改动丢弃改动 restoregit restore 文件问
每一句都先说清要什么,再让它动手。
I回退方式分三种

回退三层,越往下越狠

丢掉没提交的改动扔掉,文件回到上次提交的样子。扔掉的找不回来。
取回从某次提交取回一个文件的旧版本,别的文件和历史都不动。
撤销历史里新加一条,抵掉上一次提交,两条都看得到。
别用git reset --hard 把之后的提交和改动一起删掉。它提议就拒绝。
三层都可以交给它做,先让它说步骤、别执行,确认了再做。
现在就做 · 第二版两步,一次丢弃,一次撤销

故意改坏,再退回来

对它说
将页面标题改为一段乱码,暂不提交。 将这次改动丢弃,恢复到上一次提交的状态。 再执行一次:撤销上一个提交,保留记录。
它会跑

先跑 git status 看哪个文件变了,再跑 git restore 改回去。

第二次跑 git revert,历史里新加一条。

你该看到

第一步完成后,历史没有增加,标题恢复原样。

第二步完成后,历史中多一条 revert,上一版仍在。

改坏了不怕,怕的是没有提交点。
I认出这些词

这些词,对上位置就认得了

中文
英文
在哪里看到
仓库
repository,repo
项目里那个 .git 文件夹
工作区
working tree
面板第一段「更改」
暂存区
staging area,index
面板第二段「暂存的更改」
提交
commit
图表上的一个点,提交线上的一行
编号
hash
提交前面那七位
差异
diff
红删绿加那份对照
未跟踪、已修改
untracked,modified
面板里标 U 与 M 的文件
被忽略
ignored
被清单挡住的,面板里不出现
丢弃
restore,discard
面板上那个弯箭头「放弃更改」
撤销
revert
历史里多出来的一条
看到不认识的英文,先找它在面板的哪一段。
I交到老师的仓库 · 不必当协作者

不用老师逐个邀请,也能把改动交进他的仓库

上方是老师的仓库 mf-test,里面一条红色的 main 线,老师拿着清单站在旁边;下方五个学生各有一个我的副本,副本里从 main 分出一条蓝色的 stu/小红、stu/小明等分支;灰色虚线 Fork 从老师的仓库指向每个副本,蓝色箭头 Pull Request 从每个学生指回老师的仓库
Fork

在自己的 GitHub 账号下复制一份老师的仓库,连历史一起。怎么改都碰不到老师的 main。

Pull Request

改完推回自己那份,再请老师把你的分支合进 main。合不合、什么时候合,老师在网页上点。

为什么用它

91 人都直接推,老师要逐个发协作者邀请,一个仓库 24 小时最多发 50 个。Fork 不用等邀请。

开源项目收外人的改动,走的也是这一套。Fork 和发 PR 两步在网页上自己点,账号不交给 AI。
docs.github.com · Fork a repository · About pull requests · REST API「Add a repository collaborator」写明每个仓库 24 小时最多发 50 个邀请(2026-10-28 查阅)
I合回来以后,在 VS Code 里看分支

Git Graph,看分支怎么分出去又合回来

Git Graph 标签页:表格按 Graph、Description、Date、Author、Commit 五列排开。左侧图里一条蓝色主线,从加 demo1 练习页与练习一说明那个提交分出橙、绿、品红三条线,分别标 xiaohong/stu/xiaohong、xiaoming/stu/xiaoming、xiaomei/stu/xiaomei,作者是小红、小明、小美,再依次由 Merge pull request #1、#2、#3 合回 main,最上面是 main、origin、stu/zhangyf29 三个标签
装

左侧扩展里搜 Git Graph,作者 mhutchie,点安装。

开

点左下角状态栏的 Git Graph,或者源代码管理面板标题栏上的图标。

看

三条彩色线从「加 demo1 练习页」分出去,各走一两步,再由 #1、#2、#3 三个合并请求依次合回 main。

不装也能看,面板最下面的「图表」画的是同一张图。一条线是一个人的分支,一个汇合点是一次合并。
marketplace.visualstudio.com · Git Graph(mhutchie.git-graph)· code.visualstudio.com/docs/sourcecontrol/overview
I练习一 · 背景、装 Git、基本用法
练习一 · 合格标准先看标准,再看怎么做

五条都做到,练习一才算完

这一练装好 Git,在自己的分支上提交一次,再把改动交进老师的仓库 github.com/zhangyf29/mf-test。

装好了终端里 git --version 出版本号,邮箱和 main 两条配置敲过。
有副本你的 GitHub 账号下有一份 mf-test,本机克隆的是这一份。
在分支上改动提交在 stu/你的用户名 上,只动 demo1 里标了「改这里」的五处。
发了 PR老师仓库的 Pull requests 里有你的一条,标题写 第 N 组 · 昵称。
念得出git log --oneline -3 最上面是你的提交,说得出每条改了什么。
九步逐步演示紧接在后面。仓库公开,页面和署名只写昵称。
I练习一 · 九步总览

练习一走九步,跟着小林一步一页

开工前装好 Git、配好两条(标准第一条装好了),再到网页上 Fork 老师的仓库。仓库首页 README 里有一段给 Claude Code 的话,换掉尖括号整段复制过去,它做完一步报一次。

小林的用户名 xiaolin,第 3 组。GitHub 打不开就换老师给的 Gitee 地址,步骤照旧。截图改过 Git Graph 的显示设置,你那边标签会略有不同。

步做什么图上看什么对上哪一条
1克隆自己那份 mf-test一条线两个圆点,main 和 origin/main 贴在最上面那个点有副本
2开分支 stu/xiaolin同一个点上多一张 stu/xiaolin 标签,没有新点在分支上
3改 ① 昵称与组号面板里 index.html 标 M,差异红删绿加
4第一次提交stu/xiaolin 往上长一个点,main 留在原处
5改 ② 一句话和 ④ 主题色,第二次提交分支上两个新点,git log 最上面两行是自己的念得出
6推到自己那份stu/xiaolin 旁边多出 origin/stu/xiaolin
7发 Pull Request,老师合进主线老师的图上两个点汇回 main,多一个 Merge pull request #1发了 PR
8第二个人改了同一行编辑器里的冲突块,上下两段加三个按钮
9打开页面看变化改前改后两张并排,四处变了
前六步在自己电脑上,第 7、8 步看老师那边。每页下面的图是这一步做完时的样子。
123456789
I练习一 · 第 1 步

克隆自己那份,历史跟着一起下来

做什么

把自己账号下那份 mf-test 克隆到桌面,用 VS Code 打开。

对 Claude Code 说
把 https://github.com/xiaolin/mf-test 克隆到桌面,用 VS Code 打开
它跑git clone https://github.com/xiaolin/mf-test.git
改了哪几行

这一步不改文件。桌面上多出 mf-test 文件夹,老师那两个提交也一起下来了。

图上看什么

一条线两个圆点,最上面那个点贴着 main 和 origin/main。main 是本机的,origin/main 是 GitHub 上那份的。你屏幕上两张可能合成一张,main 后面跟一小段 origin。

Git Graph 上一条线两个圆点,下面是第一页:团队协作工作台的起点,上面是加 demo1 练习页与练习一说明,这个提交旁贴着 main、origin/main 两张标签
克隆的是 xiaolin 那份,不是 zhangyf29 的。老师的仓库推不进去,自己那份可以。
123456789
I练习一 · 第 2 步

开一条自己的分支,图上只多一张标签

做什么

开一条叫 stu/xiaolin 的分支并切过去,后面的提交都记在它上面。

命令
git switch -c stu/xiaolin Switched to a new branch 'stu/xiaolin'
改了哪几行

这一步不改文件。分支只是一张标签,贴在当前这个提交上。

图上看什么

最上面那个点多了 stu/xiaolin,和 main 贴在一起,没有新圆点。字是粗的、前面有空心圆,表示你在这条分支上。

Git Graph 上仍是两个圆点,最上面那个提交旁多了加粗的 stu/xiaolin 标签,和 main、origin/main 并排贴在同一个提交上
开分支不复制文件,开多少条都不占地方。从这一步起,改动只记在 stu/xiaolin 上。
123456789
I练习一 · 第 3 步

改 ① 昵称与组号,先在面板上核差异

做什么

打开 demo1/index.html,只改 ① 框住的两行。

在 VS Code 里改,或者对 Claude Code 说
demo1/index.html 的 ① 组号写第 3 组,昵称写小林,别处不动
改了哪几行
demo1/index.html · 第 123–124 行
- <p class="group">第 N 组</p>
- <h1 class="name">你的昵称</h1>
+ <p class="group">第 3 组</p>
+ <h1 class="name">小林</h1>
图上看什么

左边源代码管理面板的更改下面出现 index.html,标 M。点开它,右边红的是原来两行,绿的是改后两行。

VS Code 左边源代码管理面板的更改下列着 index.html demo1,右边标 M;右边差异视图里第 123、124 行红底是第 N 组和你的昵称,绿底是第 3 组和小林
还没提交,改动只在工作区里。先核差异,确认只动了框住的两行。
123456789
I练习一 · 第 4 步

第一次提交,分支往上长出一个点

做什么

把改过的文件挑进暂存区,存成第一次提交。

命令
git add demo1/index.html git commit -m "demo1:填昵称和组号" [stu/xiaolin d92165e] demo1:填昵称和组号 1 file changed, 2 insertions(+), 2 deletions(-)
改了哪几行

这一步不改文件。第 3 步那两行从工作区存进了历史。

图上看什么

stu/xiaolin 往上长出一个新圆点「demo1:填昵称和组号」。main 和 origin/main 留在下面那个点上。

Git Graph 上多出第三个圆点 demo1:填昵称和组号,stu/xiaolin 标签贴在它旁边,main、origin/main 留在下面加 demo1 练习页与练习一说明那个提交上
备注写清改了什么,git log 里念出来才有内容。main 不动,是因为你在 stu/xiaolin 上提交。
123456789
I练习一 · 第 5 步

再改两处,存成第二次提交

做什么

改 ② 一句话和 ④ 主题色,提交后念一遍历史。

命令
git commit -am "demo1:写一句话,主题色换成深蓝" [stu/xiaolin ef8a9a4] demo1:写一句话,主题色换成深蓝 git log --oneline -3
改了哪几行
④ 第 14 行
- --theme:#A5171C;
+ --theme:#1F4E79;
② 第 135 行 · 标签不变,只摘文字
- 写一件你最想交给智能体的事,比如……
+ 每天收盘后读三份券商晨报, 把观点分歧整理成一页表,标出处。
图上看什么

stu/xiaolin 又往上长一格,main 往上两个圆点都是你的。git log 最上面两行也是这两次提交。

Git Graph 上 main 往上两个新圆点,下面是 demo1:填昵称和组号,上面是 demo1:写一句话,主题色换成深蓝,stu/xiaolin 标签贴在最上面
commit 加上 -a,改过的文件一起挑进去,省掉 git add。新建的文件还得先 add。
123456789
I练习一 · 第 6 步

推到自己那份,GitHub 上也有了

做什么

把 stu/xiaolin 连同两个提交推到 GitHub 上自己那份。

命令
git push -u origin stu/xiaolin branch 'stu/xiaolin' set up to track 'origin/stu/xiaolin'. To https://github.com/xiaolin/mf-test.git * [new branch] stu/xiaolin -> stu/xiaolin
改了哪几行

这一步不改文件。-u 让本机分支记住 GitHub 上对应的那条,以后直接敲 git push。

图上看什么

stu/xiaolin 旁边多出 origin/stu/xiaolin,GitHub 上这条分支和本机走到同一点。main 那几张没动。

Git Graph 上最上面那个提交旁,stu/xiaolin 标签边上多了 origin/stu/xiaolin,表示 GitHub 上的这条分支和本机在同一点,main 和 origin/main 仍在两格之下
第一次推会弹登录窗口,自己在浏览器里点授权。账号和令牌不交给 Claude Code。
123456789
I练习一 · 第 7 步

发 Pull Request,老师合进主线

做什么

在网页上发 PR,请老师把 stu/xiaolin 合进 main。

网页上点,老师再拉到本机
小林 自己那份的仓库页,点 Compare & pull request 小林 核对 zhangyf29/mf-test main ← stu/xiaolin 小林 标题写「第 3 组 · 小林」,点 Create pull request 老师 PR 页面上点 Merge pull request 老师 本机敲 git pull,把合并拉下来
改了哪几行

这一步不改文件。合进去以后,老师 main 上的 demo1 就是小林改完的样子。

图上看什么

老师在 GitHub 上点合并,生成最上面那个 Merge pull request #1,git pull 之后出现在老师电脑上。小林的两个提交从 6a8f5c3 分出一条线,汇回到它。

老师电脑上的 Git Graph:小林的两个提交从 6a8f5c3 加 demo1 练习页与练习一说明分出一条线,再汇回 main,最上面是 3491bfe Merge pull request #1 from xiaolin/stu/xiaolin,旁边贴着 main、origin/main,ef8a9a4 旁边贴着 xiaolin/stu/xiaolin
合不合、什么时候合,老师在网页上决定。你的两个提交原样进了老师的历史。
123456789
I练习一 · 第 8 步

第二个人改了同一行,合并停下来等人挑

做什么

小周也改了 ① 那两行,老师合他的 PR 时撞车。

老师本机的命令 · 已把小周那份加成远端
git fetch xiaozhou stu/xiaozhou git merge --no-ff xiaozhou/stu/xiaozhou CONFLICT (content): Merge conflict in demo1/index.html
改了哪几行

文件里多出一个冲突块。Git 在第 123–129 行摆出小林和小周两个版本,等人来挑。

图上看什么

绿底是 main 上已有的小林,蓝底是要合进来的小周。上方一行灰字可以点,采用当前更改、采用传入的更改、保留双方更改。

VS Code 编辑器里 demo1/index.html 第 123 到 129 行的冲突块,上面一段是当前更改第 3 组和小林,下面一段是传入的更改第 5 组和小周,冲突块上方一排采用当前更改、采用传入的更改、保留双方更改、比较变更
这一步老师做,大家看。名片只留一个名字,挑剩的一边留在历史里。
123456789
I练习一 · 第 9 步

打开页面,改过的地方一眼看见

做什么

打开 demo1 页面,和原样对照。

对 Claude Code 说
用浏览器打开 demo1/index.html
或者在资源管理器里双击它
改了哪几行

这一步不改文件。

图上看什么

左边原样,右边小林改完的。组号、昵称、一句话换了,顶上色条和各处深红换成深蓝。

两张 demo1 页面并排。左边是原样,深红主题色,组号第 N 组,昵称你的昵称;右边是小林改完的,深蓝主题色,组号第 3 组,昵称小林,一句话是每天收盘后读三份券商晨报,把观点分歧整理成一页表,标出处
③ 三张卡片和 ⑤ 日期这次没动,练习时五处都填。改了哪一处,页面上就变哪一处。
I第一部分走完 · 回到路线图

一个人到这里够用了,接下来是五个人的事

你的电脑 前六次课的成果都在这里 你和组员 几个人同时改同一份 远端仓库 1 存一次快照 存的是那一刻 整个项目 2 比出差异 两份快照一减 红删绿加 3 挑着存 只把挑中的 放进这次提交 4 连成历史能退回 改坏了能退 旧的仍在 5 分出一条线 各改各的 谁也不盖谁 6 合回主线 改完在路口 碰面 7 推到远端 别人手上有 同一条历史 8 别人拉下来 克隆一次 全部历史到手
练习一第 1–4 站,顺带用了分支和推送
练习二第 5–8 站,再把小组网站部署上线
练习三换到腾讯文档,同一套道理管文字稿
老师合 PR 时撞上的冲突,组里几个人同时改会天天碰到。第二部分讲几个人怎么改同一份。
II几个人一起用

四个人同时改一份研报,难处有四个

圆桌边四个人各拿一份季度研报在改,左上和右上两人用红笔圈住同一行,中间一条虚线标着同一行;右边第五个人抱着一大摞研报满头大汗,头顶气泡问谁的才是最新的,脚边散落着研报_张三改、研报_李四改(2)、研报_合并版_别动三个文件
01大家同时在改交稿前一晚,谁也等不及谁
GIT每人一条分支,各改各的
02谁的才是最新的群里三份,打开对不上
GIT远端仓库的主线只有一份,拉下来就是最新
03合回一份时互相覆盖李四改好的数被旧版盖回去
GIT能合的自动合,撞在同一行停下来问人
04改坏了不知道是谁3.2% 变成 32%,查不出是谁
GIT每次提交记下谁、什么时候、改了哪几行
第四件第一部分讲过。后面几页讲前三件,分支、合并和远端仓库。
II先看最常见的一种

两个人改同一行,后存的盖掉先存的

没有 Git
共享盘或群文件 · 两人用同一份
  • 张三下午改完,先存回共享盘。
  • 李四手上还是上午下载的那份。
  • 李四改的也是那一行,改完也存回去。
  • 张三那句没了,谁也没收到提示。
有分支
两人各占一条线,合并时才碰面
  • 张三开一条分支,改完提交在自己这条线上。
  • 李四也开一条,起点是同一份。
  • 两条线同时推进,谁也不盖谁。
  • 合回主线时,撞在同一行的地方 Git 停下来问人。
问题不在谁不认真,在没有地方放并行的那两条线。分支就是那个地方。
II分出去,再合回来

各开一条线,在汇合点碰面

时间 main 组长:建仓库 组长:放进空白页 张三 · feature/zhangsan 改导航条 加三个栏目名 填三张卡片 写数据出处 王五 · feature/wangwu 起点相同,谁也不盖谁 Pull Request 另一个人看过才合 组长:pull 后打开看 撞在同一行,停下来问人 细节见合并与冲突那页
分开的时候互不相干,回来只在一个点碰面。
II分支怎么用,只有三条规矩

主线能用、一事一线、合前先拉

01
主线始终能打开

谁从主线拿到的都能打开、能跑。没做完的留在分支上。

02
一件事一条分支

名字看得出是谁、做什么,今天叫 feature/拼音。做完就合回去。

03
合之前先拉

先 git pull 拿到别人的提交,在最新的那份上合,撞车就少。

守住这三条,几个人同时干活也不互相踩。练习二就照这三条走。
II两条线碰面的时候

合得上的自动合,撞在同一行才停下来

能自动合
  • 改的是不同的文件
  • 同一个文件,改的地方隔着几行
要人来判
  • 两边改了同一行,或者紧挨着的几行
  • 一边删掉了,另一边还在改
张三的版本<header> <h1>市场周报 · 第 39 周</h1> </header>
它插进来的三行<<<<<<< HEAD ======= >>>>>>> feature/lisi
李四的版本<header> <h1>市场周报 2026-W39</h1> </header>
Git 不替你猜。看清两边各要什么,删掉三行标记,合成一句。
II本机那份顾完了,轮到大家那份

一个仓库,两个位置

Git 管版本,GitHub 和 Gitee 是放仓库的网站。

你的电脑
本机 · 你在这里干活
① 建仓库
② 放空白页
③ 合进分支

改文件、提交、开分支都在本机,断网也能做。

电脑坏了,远端那份还在
git clone 第一次,拿全部历史 git pull 每次动手前 git push 干完一件小事
远端仓库
GitHub 或 Gitee · 组里交换
① 建仓库
② 放空白页
③ 合进分支

组员都从这里拉、往这里推。主线只有这一份。

推上去的,别人才拉得到
本机干活,远端交换。两个框里是同一条线,不是两套。
git-scm.com · git clone、git pull、git push 文档(2026-10-28 查阅)
II这几步只能人来

命令交给它,账号和登录你自己来

  1. 01

    注册

    每人自己注册 GitHub,邮箱验证只能人来。用户名发给组长。

    GITEE在 gitee.com 注册,同样自己来。
  2. 02

    组长建仓库

    右上角 + → New repository,名字如 mf-g07。选 Private,README 之类都不加。

    GITEE+ → 新建仓库,选私有。公开仓库要人工审核。
  3. 03

    加组员

    Settings → Collaborators → Add people。组员去邮箱点接受,不接受推不上去。

    GITEE管理 → 仓库成员管理,选开发者。组长名下私有仓库合计限 5 人。
  4. 04

    推送时登录

    第一次推送弹出登录窗口,选浏览器登录,自己点授权。

    GITEE用户名填 Gitee 账号,密码栏填个人设置里生成的私人令牌。
账号、密码、令牌只在网页和弹窗里填,不交给 AI,不写进文件。
docs.github.com · Creating a new repository;Inviting collaborators to a personal repository | help.gitee.com · 添加仓库成员;Gitee 产品配额说明;通过 https、ssh 协议推拉代码(2026-10-28 查阅)
练习二 · 上 GitHub,给小组建仓库,再上线合格标准先看

一组一个仓库,四段合成一张网页

这一练几个人改同一个项目,改动一条不丢,历史一条不乱。

仓库在组里一个私有仓库,组员都打得开。GitHub 连不上,整组换 Gitee。
人都在组员都接受了邀请,每人都亲手推过一次。
一人一条每人一条 feature/拼音 分支推上去了。
合上了每条分支经 Pull Request 合进 main,合之前另一个人看过。main 上四段都在。
念得出git log --oneline 从上往下念,每条说得出谁改了哪一段。
九步逐步演示紧接在后面,走完九步接着上线。
II练习二 · 九步总览

接下来九页一页一步,走完接着上线

跟着第 3 组走一遍。组长小林,组员张三、李四、王五,仓库 mf-g03。先分好段再各开一条线,四段一人一段,页脚归组长。

截图为了看清改过 Git Graph 的显示设置,你默认的界面里 main 和 origin/main 合在一个标签里。分支线的颜色每张图都会变,认标签名,别认颜色。

步谁做什么图上看什么对上哪一条
1组长把空白页存成第一版main 上一个圆点
2组长建远端仓库,推上去,加组员main 旁边多出 origin/main仓库在
3张三克隆,开 feature/zhangsan,改导航条面板上 index.html 标 M,红删绿加
4张三提交,推送他的分支往上长出一个点
5李四、王五各开一条分支,各改一段,推送组长 fetch 后,三条线从同一点分出人都在 · 一人一条
6组长网页上合 PR #1,拉到本机第一条线汇回 main
7组长网页上合 PR #2、#3,拉到本机三条线依次汇回 main合上了
8全组浏览器打开页面三段填上了,页脚还空着
9每个组员切回 main,拉最新,念历史和组长的图一模一样念得出
GitHub 连不上,整组换 Gitee,命令不变,只换仓库地址。
123456789
II练习二 · 第 1 步

组长把空白页存成第一版,main 上有了第一个点

做什么

组长小林在材料包文件夹里建仓库,三个文件存成第一版。

命令
git init -b main git add index.html 分工说明.md .gitignore git commit -m "第一版:四段空白页" [main (root-commit) eb8f506] 第一版:四段空白页 3 files changed, 105 insertions(+)
改了哪几行

这一步不改文件。三个文件原样存进去。

为什么带 -b main

它让主分支叫 main。练习一那条 main 配置没敲过的电脑,不带它会建出 master,后面每一步的 main 都对不上。中途冒出两行 LF will be replaced by CRLF,是 Windows 换行提示,不用管。

图上看什么

只有一行,eb8f506 第一版:四段空白页,旁边贴着 main。前面的空心圆表示你现在就在这个提交上。

组长电脑上的 Git Graph 只有一行,提交 eb8f506 第一版:四段空白页,作者小林,旁边贴着 main 标签,前面一个空心圆
空白页也值得存一版。后面每一步都从这个点长出去。
123456789
II练习二 · 第 2 步

推到 GitHub 加组员,多出一个 origin/main

做什么

组长在网页上建空仓库,把第一版推上去,再加三个组员。命令里的尖括号换成你们组的,示例地址克隆不了。

网页上点,加两条命令
网页 + → New repository 建 mf-g03,选 Private,README 之类都不加 git remote add origin https://github.com/<用户名>/<仓库名>.git git push -u origin main To https://github.com/<用户名>/<仓库名>.git * [new branch] main -> main 网页 Settings → Collaborators → Add people,逐个加组员
改了哪几行

这一步不改文件。

两处只能人来

第一次推送弹出浏览器登录,自己点授权。组员去邮箱点接受,接受了才克隆得到、推得上去。

图上看什么

还是那一行,main 旁边多出 origin/main。origin/main 是 GitHub 上那份,两张标签贴在同一点,说明远端和本机一样新。

推送之后的 Git Graph 仍然只有一行 eb8f506 第一版:四段空白页,main 标签旁边多了 origin/main 标签
远端那份和本机一样新了。组员接受邀请以后,就能从这里克隆。
123456789
II练习二 · 第 3 步

张三开自己的分支,只改导航条那两行

做什么

张三克隆组里的仓库,开自己的分支,改 ① 导航条。

命令
git clone https://github.com/<用户名>/<仓库名>.git git switch -c feature/zhangsan
仓库是私有的,克隆时也弹浏览器登录。
改了哪几行
index.html · 第 35–36 行
- <b>本组项目名(改成你们组的)</b>
- <span>导航 · 这里放三个链接或三个栏目名</span>
+ <b>第 3 组 · 行研周报</b>
+ <span>研报 · 数据 · 团队</span>
图上看什么

左边 index.html 标 M,图表一栏 feature/zhangsan 还在第一版。右边红的是原来两行,绿的是改后两行。

张三的 VS Code,左边源代码管理面板的更改下列着 index.html,右边标 M,下方图表一栏第一版:四段空白页旁贴着 feature/zhangsan;右边差异视图在 ① 导航条注释下面,第 35、36 行红底是本组项目名(改成你们组的)和导航 · 这里放三个链接或三个栏目名,绿底是第 3 组 · 行研周报和研报 · 数据 · 团队
还没提交,改动只在张三的工作区里。先核差异,确认只动了自己那段。
123456789
II练习二 · 第 4 步

张三提交并推送,分支往上长出一个点

做什么

张三把导航条的改动存成一版,推到组里的仓库。

命令
git commit -am "导航条换成组名与三个栏目" [feature/zhangsan 95df2b6] 导航条换成组名与三个栏目 git push -u origin feature/zhangsan * [new branch] feature/zhangsan -> feature/zhangsan
改了哪几行

这一步不改文件。第 3 步那两行存进历史,再推到 GitHub。

图上看什么

上面一行是张三的新提交 95df2b6,贴着 feature/zhangsan 和 origin/feature/zhangsan,说明推上去了。main、origin/main 留在下面那行。

张三电脑上的 Git Graph 两行。上面 95df2b6 导航条换成组名与三个栏目,作者张三,贴着 feature/zhangsan 和 origin/feature/zhangsan;下面 eb8f506 第一版:四段空白页,贴着 main 和 origin/main
张三这条线推上去了,组长电脑上还看不到。要等组长 fetch 一次。
123456789
II练习二 · 第 5 步

李四、王五各改一段,三条线从同一点分出

做什么

李四、王五各改一段并推送,组长 fetch。

命令
李四 git switch -c feature/lisi 王五 git switch -c feature/wangwu 各自改完提交、推送,同第 4 步 组长 git fetch
改了哪几行
李四 · db38ab1 标题与简介写清做什么、给谁看
- <h1>这一页标题(改成你们组的)</h1>
+ <h1>每周五,一页看懂三家券商对新能源车的分歧</h1>
王五 · 45e74b0 三张卡片填上三个数与标签 · 摘第一张
- <div class="v">—</div><div class="l">第一个数</div>
+ <div class="v">3 家</div><div class="l">券商晨报</div>
李四下面一行简介也换了。王五另两张填 12 条 观点、1 页 结论。
图上看什么

组长电脑上,三个组员的提交各成一条线,都从最下面的第一版分出去,标签都以 origin/feature 开头。main 还在第一版。

组长 fetch 之后的 Git Graph 四行:最下面 eb8f506 第一版:四段空白页贴着 main 和 origin/main;上面三行分别是 origin/feature/wangwu 三张卡片填上三个数与标签、origin/feature/lisi 标题与简介写清做什么、给谁看、origin/feature/zhangsan 导航条换成组名与三个栏目,三条线都从最下面那个点分出去
三个人谁也没碰谁的段落。下一步合回去,Git 能自动合上。
123456789
II练习二 · 第 6 步

组长在网页上合 PR #1,第一条线汇回 main

做什么

张三发 PR,组长看过改动合进 main,再拉到本机。

网页上点,本机拉
张三 发 PR #1,feature/zhangsan → main 组长 打开 PR #1 看 Files changed,再点 Merge pull request 组长 git switch main 组长 git pull
改了哪几行

不用手改。合并把张三那两行带进 main。

不走网页,本机等价做法
git merge --no-ff --no-edit origin/feature/zhangsan
自己敲时不带 --no-edit,会弹出编辑器让你写合并备注。
图上看什么

最上面多出 Merge pull request #1 from xiaolin/feature/zhangsan。张三那条线汇回这个点,李四、王五两条还悬着。main 和 origin/main 贴在一起,合并是在 GitHub 上做的。

组长 git pull 之后的 Git Graph 六行:最上面 ccb0c33 Merge pull request #1 from xiaolin/feature/zhangsan,作者小林,贴着 main 和 origin/main;张三的 95df2b6 导航条换成组名与三个栏目贴着 origin/feature/zhangsan,那条线从最下面的 eb8f506 出去汇回最上面的合并点;李四 db38ab1、王五 45e74b0 两条线还没合
合并在 GitHub 上做,本机只管拉。所以 main 和 origin/main 贴在一起。
123456789
II练习二 · 第 7 步

再合 PR #2、#3,三条线依次汇回 main

做什么

组长照第 6 步合李四、王五的 PR,再拉到本机。

网页上点,本机拉
组长 PR #2、#3 依次看过,点 Merge pull request 组长 git pull ccb0c33..2d44160 main -> origin/main
改了哪几行

不用手改。三人各改各的段落,两次都自动合上,没有冲突。

图上看什么

从下往上三个合并,#1、#2、#3,三条线依次汇回主线。最上面 2d44160 贴着 main 和 origin/main。

组长电脑上的 Git Graph 七行:最上面 2d44160 Merge pull request #3 from xiaolin/feature/wangwu 贴着 main 和 origin/main,下面是 53bd202 Merge pull request #2 from xiaolin/feature/lisi、ccb0c33 Merge pull request #1 from xiaolin/feature/zhangsan,再下面是王五、李四、张三三个提交各带 origin/feature 标签,最底下 eb8f506 第一版:四段空白页,三条线从最底下分出,依次汇回主线
三条线都回到 main。GitHub 上这一版,就是全组合好的页面。
123456789
II练习二 · 第 8 步

打开网页对一对,三段填上了,页脚还空着

做什么

全组打开合好的页面,和第一版对照。

对 Claude Code 说
用浏览器打开 index.html
或者在资源管理器里双击它
改了哪几行

这一步不改文件。

图上看什么

左边第一版,右边合完三个 PR 的。导航条、标题与简介、三张卡片都换了,页脚还是待填。

两张网页并排。左边改前是四段空白页,导航条写着本组项目名(改成你们组的),标题写着这一页标题(改成你们组的),三张卡片都是横线;右边改后,导航条是第 3 组 · 行研周报和研报 · 数据 · 团队,标题是每周五,一页看懂三家券商对新能源车的分歧,下面一句简介,三张卡片是 3 家券商晨报、12 条观点、1 页结论,两边页脚都是本组成员:待填 · 数据来源与日期:待填
每一处变化,图上都找得到是哪条线带来的。页脚归组长,写完照第 3 到第 7 步再走一遍。
123456789
II练习二 · 第 9 步

张三拉下最新版,历史和组长的一字不差

做什么

张三切回 main,拉最新版,念一遍历史。每个组员都做。

改了哪几行

这一步不改文件。

命令
git switch main git pull git log --oneline
先切回 main。留在自己分支上 pull,main 不会动。
git log --oneline 念出来
2d44160 Merge pull request #3 from xiaolin/feature/wangwu 53bd202 Merge pull request #2 from xiaolin/feature/lisi ccb0c33 Merge pull request #1 from xiaolin/feature/zhangsan 45e74b0 三张卡片填上三个数与标签 db38ab1 标题与简介写清做什么、给谁看 95df2b6 导航条换成组名与三个栏目 eb8f506 第一版:四段空白页
图上看什么

和第 7 步组长那张一模一样。多出的 feature/zhangsan 是张三本地的分支。git log 七行也和组长的一字不差。

张三电脑上 git pull 之后的 Git Graph 七行,和组长那张一样:最上面 2d44160 Merge pull request #3 贴着 main 和 origin/main,下面 #2、#1 两个合并和三个组员的提交,最底下 eb8f506;95df2b6 那一行多了张三本地的 feature/zhangsan 标签
历史从上往下念,每条说得出谁改了哪段。前半段到这里,接下来把 main 这一版放上网。
II练习二后半段 · 从仓库到网址

仓库里那一份只给组员,上线那一份给全班

仓库里
GitHub 或 Gitee · 私有仓库
  • 只有组员进得去,老师和别组打不开。
  • 进去看到的是源代码,不是排好的页面。
上线之后
show.lingnan.top · 每组一个固定网址
  • 网址形如 https://mf07.show.lingnan.top/,一直不变。
  • 打开先输班级密码。
  • 令牌以 show_ 开头,只认本组,不发别组,泄露了找老师重置。
  • 终期展示、评审都从这个网址进。
网址、令牌、班级密码都在作业平台 hw.lingnan.top/mf/ 的「我的小组」页,组长先去拿。
show.lingnan.top/docs(2026-10-28 查阅)
II练习二后半段 · 一句话交给它

说明和令牌一起给它,它照着部署

组长在仓库文件夹里开 Claude Code,发下面这段。「我的小组」页上有一段填好的,复制就行。

Claude Code · 你说的
先切回 main 再 git pull,确认四段都在。 再用 curl.exe 读 https://show.lingnan.top/docs, 按说明把当前文件夹部署上去。这是纯静态网页。 令牌 <令牌>,只在命令里用,不写进任何文件。 deploy.json 写好后提交进仓库。 上传后每 5 秒查一次状态,failed 就读部署记录, 改了再传,直到 ok。再填项目名和一句话简介。
Claude Code · 它会跑
1 拉最新git switch main,git pull 2 读说明curl.exe -s https://show.lingnan.top/docs 3 写配置deploy.json,git commit 4 打包tar … ..\project.zip 5 上传curl.exe -X POST … /api/deploy 6 查状态curl.exe … /api/status,每 5 秒一次 7 填信息curl.exe -X POST … /api/profile 8 报结果deploy.state 是 ok,把网址告诉你
会改仓库、往服务器传东西的,它先问你,看清了再允许。
II练习二后半段 · deploy.json、打包、上传

打包传上去,状态 ok 才算成

01 写 deploy.json · 今天是纯静态网页
{"type": "static", "root": "."}
终期要调大模型 · 换成 Python 后端
{"type": "python", "start": "python app.py", "port": 8000}
PowerShell · 02 打包 · 03 上传 · 04 查状态,都在项目文件夹里跑
tar -a -c -f ..\project.zip --exclude=.venv --exclude=venv --exclude=__pycache__ --exclude=.git --exclude=.env * curl.exe -X POST -H "Authorization: Bearer <令牌>" -H "Content-Type: application/zip" --data-binary "@..\project.zip" https://show.lingnan.top/api/deploy curl.exe -H "Authorization: Bearer <令牌>" https://show.lingnan.top/api/status
02 打包

最外层直接是 deploy.json 和 index.html,不超过 50MB。

03 上传

包里有 sk- 开头的串,整包拒收。

04 查状态

每 5 秒一次,ok 才算成。failed 就读 deploy_log。

05 填作品信息

POST /api/profile,项目名 40 字、简介 200 字内。

不想敲命令,打开 show.lingnan.top/upload 填令牌,网页上都能做,包括退回上一版。
show.lingnan.top/docs · 一、项目约定;二、打包;三、接口(2026-10-28 查阅)
II练习二后半段 · 上线之后自己先验

四条都过了,才算真的上线

换台设备手机关掉无线网,用流量打开本组网址,输班级密码,页面出来。
和 main 一致网页上四段都在,和仓库 main 上合好的那一版一样。deploy.json 也提交了。
列表上有名登录 show.lingnan.top,作品列表里看得到本组的项目名和简介。
没带出令牌令牌和密钥不在仓库、压缩包、截图里,git log 里也查不到。
终期带 AI 模块的再加一条,在页面上问一句,AI 真的回了才算。
只在本机能打开不算,换一台设备打得开才算上线。
II练习二后半段 · 卡住的时候

卡住了,先看这八条

现象多半是怎么办
打开显示「还没有上线作品」还没部署成功查状态,failed 就读 deploy_log
样式、图片丢了引用写成 C:/…,或文件名大小写对不上改成相对路径;服务器是 Linux,大小写要一致
上传被整包拒收文件里有 sk- 开头的串删掉那串,密钥走上传页;设过 cookie 的去掉 domain
部署记录说只监听了 127.0.0.1外面连不进程序改成监听 0.0.0.0,端口读环境变量 PORT
ModuleNotFoundError包没写进 requirements.txt补上,只写用到的包,不写 Windows 专用包
一直显示「正在启动」程序一启动就崩了上传页或 /api/logs 看程序输出
页面能开,AI 功能报错密钥没设,或代码没从环境变量读上传页设 DEEPSEEK_API_KEY,代码用 os.environ 读
中文乱码、UnicodeDecodeError文件不是 UTF-8存成 UTF-8,读写文件写明 encoding="utf-8"
改完重新打包再传,状态回到 ok 才算修好。部署失败时,有能用的旧版就自动退回,线上不断。
show.lingnan.top/docs · 六、常见问题(2026-10-28 查阅)
III第三部分 · 文字上的同步

文字稿也要一个源头,不能五个人各存一份

练习二网页上的项目名、简介、三个数和分工,是全组一起写的文字。代码有 Git 管,文字也要有地方管。

微信群里传 Word
五个人 · 五份文件
  • 各改一份发回群里,哪份算数说不清。
  • 从 Word 粘进网页、粘给 AI,格式一粘就乱。
  • 一个数变了,找不出是谁改的。
一份腾讯文档
五个人 · 同一份
  • 一个源头,全组只认一个链接。
  • 改动留痕,每次改动自动存成一版。
  • 谁改的查得到,修订记录里有人名和时间。
  • 改坏了退得回,旧版本还在。
右边四条,就是 Git 替代码做的事。
现在就做 · 扫码签到全班进同一份文档

全班扫码进一份文档,先签个到

二维码:腾讯文档《第7次课·练习三·各组项目说明》,链接 docs.qq.com/doc/DZVZNWVpXUUd5ZmtW
《第7次课·练习三·各组项目说明》
docs.qq.com/doc/DZVZNWVpXUUd5ZmtW
  1. 手机扫码或电脑打开链接,QQ 或微信登录后才能改。
  2. 读完顶部四条,到签到区写一行组号加昵称。
  3. 写的时候看屏幕,别人的光标也在动。
九十多人改同一份,没人发附件,谁打开都是最新的。
III和 Git 一一对照

像 Git,但有四样对不上

Git 里腾讯文档里在哪找,差在哪
仓库一份在线文档全组只认这一个链接
一次提交自动存下的一版不用点保存,自动记成「第 N 版」
git log / diff修订记录右上角「≡」→「查看修订记录」,点开一版和现在对照
git restore / revert还原点「还原」,整份文档退回那一版
挑着存没有改了就存,写到一半的半句话也成了一版
提交说明没有只记谁、什么时候改的,不记为什么
分支没有大家始终改同一份
冲突碰不上实时同步,后改的直接盖掉先改的
实时同步避开了冲突,代价是没人拦着你改别人那句。
kf.qq.com · 腾讯文档历史编辑版本信息如何查询(2026-10-28 查阅)
III腾讯文档官方 MCP 服务

让它读文档,终端里一条命令接上

01
领令牌

打开 docs.qq.com/open/auth/mcp.html,QQ 或微信登录后复制。企业微信领不到。

02
终端里登记

PowerShell 里跑右边这条。令牌别贴进对话。

03
看连上没有

claude mcp list 显示 ✔ Connected,超时就再跑一次。

04
重开再试读

试读时 file_id 只填右边红字,填整条链接会报错。

PowerShell · 把「你的令牌」换掉,跑一次
claude mcp add --transport http -s user tencent-docs https://docs.qq.com/openapi/mcp --header "Authorization: 你的令牌"
file_id 是链接里的哪一段
docs.qq.com/doc/DZVZNWVpXUUd5ZmtW

-s user 记在本机的用户配置里,进不了仓库。
Claude Code 不读 .env,别用 .mcp.json 加 .env。

它读得到的,就是你这个账号看得到的。
docs.qq.com/open/auth/mcp.html(2026-10-28 跳转至 docs.qq.com/scenario/open-claw.html)· code.claude.com/docs · MCP · 2026-10-28 实测
现在就做 · 读回本组那段每人各读一次,确认连得上

让它读本组那段,空着的要直说空着

对它说
用 tencent-docs 读这份文档 file_id 是 DZVZNWVpXUUd5ZmtW 只看「第 N 组」那一段 四个小标题下各写了什么,逐个念一句 空着的就说空着,不要改文档
它会跑

读出全文,找到第 N 组那段。第一次调这个工具,它会先问你允不允许。

你该看到

四个小标题原样念回来。空着的说空着,不替你编。

小标题一项目名与一句话简介导航条和标题
小标题二给谁看,解决什么标题下的简介
小标题三三个数及出处三张卡片,出处进页脚
小标题四组员分工页脚的组员一栏
两百多个工具走 DeepSeek 可能很慢,慢就用练习三做法页上的退路。
练习三 · 用腾讯文档做文字上的同步合格标准先看 · 做法下一页

全组同写一段,再用进网页

这一练让全组文字只留一个源头,谁改的查得到,改坏了退得回。

都有人写本组那段四个小标题都有人写,不是一个人包了。
指得出在修订记录里指得出某一处是谁、什么时候改的。
退回过恢复过一次误改,别组的字一个没动。
用进网页Claude Code 读回本组那段填进网页,说得出读的是哪一段。
没有令牌令牌不进仓库,不进会话记录。
第三条最容易做错。21 组写在同一份里,整份还原会把别组的字一起退掉。
练习三 · 做法只改自己组那段 · 对它说的话在实操页上

一人一个小标题,写完让它搬进网页

二维码:腾讯文档《第7次课·练习三·各组项目说明》
docs.qq.com/doc/
DZVZNWVpXUUd5ZmtW
  1. 01

    认领四个小标题一人一个,第五个人管修订记录。

  2. 02

    同时写全组同时动笔,三个数写清出处。

  3. 03

    误改一句一人改组里别人写的一句,记下几点几分。

  4. 04

    找出来,抄回去在修订记录里找到改之前那一版,原句抄回去。别点「还原」。

  5. 05

    搬进网页让 Claude Code 读回本组那段填进网页,提交、推送、重新部署。

MCP 慢或连不上 跑小组项目里的 python 读腾讯文档.py <链接> --out 项目说明.md,让 Claude Code 读这个本地文件,验收照算。
网页上的字从这份文档来,以后改字先改文档,再让它搬一次。
III收束 · 接下来怎么走

今晚、本周、终期前,各留下一份东西

  1. 01

    今晚

    讲国产智能体,测部署,
    最后个人作业二展示。
    练习没做完的课后补上。

  2. 02

    本周内

    练习二的仓库接着用,
    分工与进度写进去。
    腾讯文档里的项目说明
    接着改。

  3. 03

    终期前

    汇报页、技能、规则
    都进仓库。
    网页改完就重新部署。

  4. 04

    两个节点

    11-10 前交齐终期材料,
    11-11 上课各组展示,
    每组十分钟。

代码进仓库,文字进在线文档,两样都只留一个源头。