我现在能查到的最早一条公开 Git 记录,时间是 2022 年 12 月 8 日 16:42:32。它比旧稿写的“2022 年最后一天”早了二十三天。
第一条提交没有宏大的内容,只加入了 .gitignore 和 .gitattributes。三秒以后,第二条提交才加入项目文件:一个 Visual Studio 方案、一份 C/C++ 项目配置,还有名为 源.cpp 的课程实验。
这两条记录很短,却足以纠正一段被后来记忆修饰过的开头。公开历史只能说明文件在那一分钟进入远端。至于代码写了多久、此前有没有别的练习、当时为什么选择上传,提交里都没有答案。
那份代码做了什么
源.cpp 的开头写着“第十一次实验报告”。实验内容要求建立学生结构,读取人数、学号、姓名和成绩,再计算平均值。程序用一个长度为 10 的结构数组保存输入,循环累加成绩,最后输出两位小数。
它是一份很典型的课程练习。题目想让我熟悉结构变量和数组,代码也确实沿着题目给出的路径完成了输入、存储与计算。仓库里没有测试,没有运行截图,也没有解释文件。单看这次提交,能够确认的内容到这里就结束了。
二〇二六年再读,几个缺口很快就能看见。代码相信输入的人数一定小于 10,却没有在程序里检查;输入 0 会让平均值计算遇到除零;姓名通过没有宽度限制的 %s 读取,过长内容可能越过数组。它还把实验说明、IDE 工程文件和源代码一次提交,提交信息只写“添加项目文件”。
这些问题不需要被改写成一个“从青涩到成熟”的故事。它们只是那份练习当时的样子:功能很小,输入条件来自题目,异常路径没有进入代码,Git 负责保存文件,却没有保存判断过程。
提交记录保存了什么
旧稿把 Git 写成一种让项目不会消失的工具,这个方向没有错,只是当时的记录比文章诚实得多。
提交保存了精确时间、文件树和每个文件的版本。它让我知道,公开记录的起点是 12 月 8 日;也让我知道,最早进入仓库的是一份课程实验,而非后来想象中的完整项目。即使源文件继续被整理,固定提交仍能还原那七个文件。
提交没有保存写代码时的现场。它没有说明实验是否一次运行通过,没有成绩,也没有老师或同学的反馈。第一条记录的作者名来自当时电脑上的 Git 配置,后来的提交又换过名称;这些元数据同样不能被扩写成身份或经历。
最早几条信息也很简略:“添加项目文件”“Create README”“Recent updates”。它们能标记变化发生过,无法解释变化的原因。几年后回看,我可以从 diff 里重新理解代码,却不能从一句 update 中找回当时的取舍。
日期也属于正文
这次整理旧文时,我原本只准备改标题和语气。核对仓库后,最先需要修改的却是日期。12 月 31 日很适合被写成一年的收尾,公开提交实际发生在 12 月 8 日,所以正文也改回这一天。
“第一次”也需要收窄。它可能是当前账号最早的公开提交,不足以覆盖私有仓库、本机文件和已经遗失的代码。因此这里只写“当前能查到的最早公开记录”,不再扩大它的范围。
同一时期的另一篇旧文写过一个 Node 留言板,里面有 JSON 文件、录屏和朋友回复。本轮没有找到对应源码或同期记录,所以这两条线没有被拼在一起。C 语言实验只能证明它自己,不能替另一个故事补齐起点。
这次保留的版本
公开历史里的第一份代码并不漂亮,也不需要替今天的我证明什么。它能确认的事情很少:2022 年 12 月 8 日,两条提交相隔三秒,一份课程实验进入远端;程序能表达题目要求,也暴露了输入检查和记录方式的缺口。
这次重写把日期改回证据指向的那一天,写清进入仓库的文件,并删去无法确认的现场。其余内容不再补写。
本文于 2026-08-09 根据公开仓库固定提交重新整理;文中的 2022-12-08 是可核事件日,不代表当年已有同样的文字版本。