解读 187 · Git 入门:commit 是证据
解读对象:概念课 · 以
docs/microduck-30day/README.md(记录原则)与docs/microduck-30day/experiments/experiment-template.md为教材
需要的前置:零基础可读;环境怎么搭见解读 186
很多人把 Git 当"代码备份",本篇换一个说法:commit 是实验的快照,是能回头的证据。这只鸭子的 30 天实验包把它写成了制度,咱们读制度学概念。
commit 是什么:给整个项目拍一张带编号的照片
commit 把"此刻全部文件的样子"固化下来,配一个唯一编号(如 29e887ec…)和一句说明。类比实验员给样品拍照封存:之后代码怎么改、甚至改坏了,照片里的状态永远调得出来。照片是在你机器本地拍的,git push 才把它寄去远端仓库——本地拍照、远端寄送,是两步。
记录原则:每次实验都记下 commit
docs/microduck-30day/README.md 末尾有一节"记录原则",原文是这套方法的宪法:
每次实验都记录:代码 commit、训练命令、环境数量、迭代数量、日志目录、checkpoint、
显存/时间、关键曲线、失败原因和下一步。没有实际证据的内容标为“待验证”。
为什么 commit 排第一?训练结果只在"那一份代码"上成立。三天后你改了奖励函数再跑,曲线就对不上号了;有了 commit 编号,任何时候都能 git checkout 回当时那份代码重跑、对质。实验记录模板(experiment-template.md)据此设了"代码状态"一节:
## 代码状态
- commit:
- 是否有未提交修改:
- 配置文件:
注意第二行:未提交的修改也要记——照片拍了但口袋里还揣着没入镜的东西,证据就有窟窿。
发表结果前,把版本钉死
进阶文档 §1.2 演示了"钉版本"的命令:
cd microduck_rl && git checkout 29e887ecfbf5d37144759e5a9f8a176dfb83d547
checkout <编号> 就是"把项目恢复到这张照片的状态"。文档原话:平时探索可以跟最新分支,但发表/对比结果时必须记录 commit。上游代码一变,你的对比实验就作废——钉住版本,数字才有资格写进 experiment-log.csv 那样的总表。
你带走的收获
- commit = 项目快照 + 唯一编号;
push是寄送,checkout <编号>是回到照片时刻。 - 训练曲线只在"拍快照的那份代码"上成立:先 commit,再训练,再把编号写进实验记录。
- "是否有未提交修改"和 commit 同等重要,否则证据不完整。
- 没有证据的内容写"待验证"——这是本仓库的铁律,也是科研诚信的最小版本。
- 对比实验前把依赖的仓库都
checkout到固定 commit,别跟最新分支。