金融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 今天怎么走 · 三个练习
八站一条线,三个练习各走一段
你的电脑
前六次课的成果都在这里
你和组员
几个人改同一条主线
远端仓库
存一次快照
比出差异
挑着存
连成历史能退回
分出一条线
合回主线
推到远端
别人拉下来
存下那一刻的项目
两份快照一减
只放挑中的
改坏了能退
各改各的
改完在路口碰面
别人手上也有
克隆一次全到手
1 2 3 4
5 6 7 8
练习一 · 一个人把前四站走一遍
手上有一条提交线和一个 PR
开 stu/ 分支
推上去,发 PR
练习二 · 小组走 5–8 站,再上线
手上有小组仓库和网址
练习三 · 换成腾讯文档,同一套原理再走一遍
手上有全组同写的项目说明,网页文字从它来
I 背景 · 版本管理为什么重要
版本管理管的是复核、交接、退回
复核 有人问起某一句,指得出是谁、哪天改的,改之前写的是什么。
交接 人走了,接手的人从第一条记录读起,看得懂它怎么变成这样。
退回 今天改坏了,退回昨天能用的那一版,别的改动不跟着丢。
AI 进来以后
Claude Code 几分钟改完一轮,改动不是你亲手敲的 ,过后你也说不清它动了哪里。
I 背景 · 手动命名模式
大家都会的办法,每改一轮另存一份
怎么做 改之前复制一份, 名字后面加 _改、_终稿、_最终版。
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 是什么
用 Word 写长文,怕删掉的段落找不回,一次次另存为。
一周后想找回那段,记不清在哪个文件里,只能逐个打开。
有一部分要财务同事填。拷进 U 盘发给她,你自己接着改。
一天后她传回来,你得回想自己改了哪些,再手工合并。
phdcomics.com/comics/archive.php?comicid=1531 · liaoxuefeng.com/books/git/what-is-git · 核对 2026-10-28
I 背景 · 手动模式碰到代码
一个项目是一串文件,改个名引用就断
改名后 index.html 还在找 style.css,页面样式就丢了。Claude Code 一轮常改七八个文件,靠改名更跟不上。
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 仓库的网站。
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每时每刻都在变,放在线文档里
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 里的样子
不敲命令,在面板上点也能提交
1
2
3
4
1 活动栏这个图标打开面板,快捷键 Ctrl+Shift+G 。角上的数字是改过几个文件。
2 更改 这一段就是工作区。M 是改过,U 是新建,点文件名出差异。
3 加号 把文件挑进暂存区,面板上多出一段暂存的更改 。旁边的弯箭头是放弃更改,点了改动就没了。
4 提交框 写一句说明,再点蓝色的提交。提交过的都在面板最下面的图表 里,那就是仓库。
点开 index.html 看到的差异。第 135 行,红的是原句,绿的是改后的。
code.visualstudio.com/docs/sourcecontrol/overview(2026-10-28 查阅)
I 照着说就行
六句话,六个动作
你说 动作 它跑什么 问不问你
把这个文件夹用 Git 管起来 开启版本记录 init git init,再写 .gitignore问
现在哪些文件改了 看状态与差异 git status、git diff不问
只提交这两个文件 挑范围并提交 git add、git commit -m问
显示最近几次记录 看历史 log git log --oneline不问
撤销上一次提交,保留记录 撤销一次提交 revert git revert HEAD问
丢弃这个文件没提交的改动 丢弃改动 restore git 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 交到老师的仓库 · 不必当协作者
不用老师逐个邀请,也能把改动交进他的仓库
Fork 在自己的 GitHub 账号下复制一份老师的仓库,连历史一起。怎么改都碰不到老师的 main。
Pull Request 改完推回自己那份,再请老师把你的分支合进 main。合不合、什么时候合,老师在网页上点。
为什么用它 91 人都直接推,老师要逐个发协作者邀请,一个仓库 24 小时最多发 50 个。Fork 不用等邀请。
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,作者 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 打开页面看变化 改前改后两张并排,四处变了
1 2 3 4 5 6 7 8 9
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。
1 2 3 4 5 6 7 8 9
I 练习一 · 第 2 步
开一条自己的分支,图上只多一张标签
做什么 开一条叫 stu/xiaolin 的分支并切过去,后面的提交都记在它上面。
命令 git switch -c stu/xiaolin
Switched to a new branch 'stu/xiaolin'
改了哪几行 这一步不改文件。 分支只是一张标签,贴在当前这个提交上。
图上看什么 最上面那个点多了 stu/xiaolin ,和 main 贴在一起,没有新圆点。字是粗的、前面有空心圆,表示你在这条分支上。
1 2 3 4 5 6 7 8 9
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 。点开它,右边红的是原来两行,绿的是改后两行。
1 2 3 4 5 6 7 8 9
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 留在下面那个点上 。
1 2 3 4 5 6 7 8 9
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 最上面两行也是这两次提交。
1 2 3 4 5 6 7 8 9
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 那几张没动。
1 2 3 4 5 6 7 8 9
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 分出一条线,汇回到它。
1 2 3 4 5 6 7 8 9
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 上已有的小林,蓝底是要合进来的小周。上方一行灰字可以点,采用当前更改、采用传入的更改、保留双方更改。
1 2 3 4 5 6 7 8 9
I 练习一 · 第 9 步
打开页面,改过的地方一眼看见
对 Claude Code 说 用浏览器打开 demo1/index.html
或者在资源管理器里双击它
图上看什么 左边原样,右边小林改完的。组号、昵称、一句话换了,顶上色条和各处深红换成深蓝。
I 第一部分走完 · 回到路线图
一个人到这里够用了,接下来是五个人的事
你的电脑
前六次课的成果都在这里
你和组员
几个人同时改同一份
远端仓库
1
存一次快照
存的是那一刻
整个项目
2
比出差异
两份快照一减
红删绿加
3
挑着存
只把挑中的
放进这次提交
4
连成历史能退回
改坏了能退
旧的仍在
5
分出一条线
各改各的
谁也不盖谁
6
合回主线
改完在路口
碰面
7
推到远端
别人手上有
同一条历史
8
别人拉下来
克隆一次
全部历史到手
练习一 第 1–4 站,顺带用了分支和推送
练习二 第 5–8 站,再把小组网站部署上线
练习三 换到腾讯文档,同一套道理管文字稿
II 几个人一起用
四个人同时改一份研报,难处有四个
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>
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 这几步只能人来
命令交给它,账号和登录你自己来
01 注册 每人自己注册 GitHub,邮箱验证只能人来。用户名发给组长 。
GITEE 在 gitee.com 注册,同样自己来。
02 组长建仓库 右上角 + → New repository ,名字如 mf-g07。选 Private ,README 之类都不加。
GITEE + → 新建仓库,选私有。公开仓库要人工审核。
03 加组员 Settings → Collaborators → Add people 。组员去邮箱点接受 ,不接受推不上去。
GITEE 管理 → 仓库成员管理,选开发者。组长名下私有仓库合计限 5 人。
04 推送时登录 第一次推送弹出登录窗口,选浏览器登录,自己点授权 。
GITEE 用户名填 Gitee 账号,密码栏填个人设置里生成的私人令牌。
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,拉最新,念历史 和组长的图一模一样 念得出
1 2 3 4 5 6 7 8 9
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。前面的空心圆表示你现在就在这个提交上。
1 2 3 4 5 6 7 8 9
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 上那份,两张标签贴在同一点,说明远端和本机一样新。
1 2 3 4 5 6 7 8 9
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 还在第一版。右边红的是原来两行,绿的是改后两行。
1 2 3 4 5 6 7 8 9
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 留在下面那行。
1 2 3 4 5 6 7 8 9
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 还在第一版。
1 2 3 4 5 6 7 8 9
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 上做的。
1 2 3 4 5 6 7 8 9
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。
1 2 3 4 5 6 7 8 9
II 练习二 · 第 8 步
打开网页对一对,三段填上了,页脚还空着
对 Claude Code 说 用浏览器打开 index.html
或者在资源管理器里双击它
图上看什么 左边第一版,右边合完三个 PR 的。导航条、标题与简介、三张卡片都换了,页脚还是待填。
1 2 3 4 5 6 7 8 9
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 七行也和组长的一字不差。
II 练习二后半段 · 从仓库到网址
仓库里那一份只给组员,上线那一份给全班
仓库里
GitHub 或 Gitee · 私有仓库
只有组员进得去,老师和别组打不开。
进去看到的是源代码,不是排好的页面。
上线之后
show.lingnan.top · 每组一个固定网址
网址形如 https://mf07.show.lingnan.top/ ,一直不变。
打开先输班级密码。
令牌以 show_ 开头,只认本组,不发别组,泄露了找老师重置。
终期展示、评审都从这个网址进。
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。
04 查状态 每 5 秒一次,ok 才算成 。failed 就读 deploy_log。
05 填作品信息 POST /api/profile,项目名 40 字、简介 200 字内。
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"
show.lingnan.top/docs · 六、常见问题(2026-10-28 查阅)
III 第三部分 · 文字上的同步
文字稿也要一个源头,不能五个人各存一份
练习二网页上的项目名、简介、三个数和分工,是全组一起写的文字。代码有 Git 管,文字也要有地方管。
微信群里传 Word
五个人 · 五份文件
各改一份发回群里,哪份算数说不清 。
从 Word 粘进网页、粘给 AI,格式一粘就乱 。
一个数变了,找不出是谁改的 。
一份腾讯文档
五个人 · 同一份
一个源头 ,全组只认一个链接。
改动留痕 ,每次改动自动存成一版。
谁改的查得到 ,修订记录里有人名和时间。
改坏了退得回 ,旧版本还在。
现在就做 · 扫码签到 全班进同一份文档
全班扫码进一份文档,先签个到
《第7次课·练习三·各组项目说明》
docs.qq.com/doc/DZVZNWVpXUUd5ZmtW
手机扫码或电脑打开链接,QQ 或微信登录后才能改 。
读完顶部四条,到签到区写一行组号加昵称 。
写的时候看屏幕,别人的光标也在动 。
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 组那段。第一次调这个工具,它会先问你允不允许。
你该看到
四个小标题原样念回来。空着的说空着,不替你编。
小标题一 项目名与一句话简介 导航条和标题
小标题二 给谁看,解决什么 标题下的简介
小标题三 三个数及出处 三张卡片,出处进页脚
小标题四 组员分工 页脚的组员一栏
练习三 · 用腾讯文档做文字上的同步 合格标准先看 · 做法下一页
全组同写一段,再用进网页
这一练让全组文字只留一个源头,谁改的查得到,改坏了退得回。
都有人写 本组那段四个小标题都有人写 ,不是一个人包了。
指得出 在修订记录里指得出某一处是谁、什么时候改的 。
退回过 恢复过一次误改 ,别组的字一个没动。
用进网页 Claude Code 读回本组那段填进网页,说得出读的是哪一段 。
没有令牌 令牌不进仓库,不进会话记录 。
练习三 · 做法 只改自己组那段 · 对它说的话在实操页上
一人一个小标题,写完让它搬进网页
docs.qq.com/doc/ DZVZNWVpXUUd5ZmtW
01 认领 四个小标题一人一个,第五个人管修订记录。
02 同时写 全组同时动笔,三个数写清出处。
03 误改一句 一人改组里别人写的一句,记下几点几分 。
04 找出来,抄回去 在修订记录里找到改之前那一版,原句抄回去。别点「还原」。
05 搬进网页 让 Claude Code 读回本组那段填进网页,提交、推送、重新部署 。
MCP 慢或连不上 跑小组项目里的 python 读腾讯文档.py <链接> --out 项目说明.md,让 Claude Code 读这个本地文件,验收照算。
III 收束 · 接下来怎么走
今晚、本周、终期前,各留下一份东西
01 今晚 讲国产智能体,测部署, 最后个人作业二展示 。 练习没做完的课后补上。
02 本周内 练习二的仓库接着用,分工与进度写进去 。 腾讯文档里的项目说明 接着改。
03 终期前 汇报页、技能、规则 都进仓库。网页改完就重新部署 。
04 两个节点 11-10 前交齐终期材料,11-11 上课各组展示, 每组十分钟。