Gitlet完结小总结
作为一名刚刚升入大一的小菜鸡,终于是把CS61B的大魔王—Gitlet搞定了!
花费3~4h读文档,12h左右写完本体,9~10h的debug和改格式,一共花费26h左右的时间,连续做了3,4天。(真的课内作业布置了都还没写,直接跟gitlet杠上了,后面还要补课内作业QAQ,我的月卡忘记领了啊啊啊)
我的感想:
- gitlet是一个好项目,文档巨长,挑战性十足,刚点开proj2看到文档的我已经汗流浃背了,但是它同时也锻炼了我的代码能力,放在以前,我都不敢想象这1000多行的代码是我自己构建出来的,真的很有成就感捏。作为刚入坑计算机的我(CS61a-24su做到cats就没看了,学习了C Primer Plus 前十三章以及习题全写,C++学习了面向对象之后,开始的CS61b)这时61b的proj对我而言还是有难度的,不过坚持下来收获是真的丰富呢。ヾ(≧ ▽ ≦)ゝ
我的经历
- 从一开始的硬啃文档,到沉浸式翻译中英文对照啃文档,到.git目录参考真实的git结构,理解各个类的作用和联系,将文档转化成代码,再进行debug,终于是搞定下来了。没有向AI问问题,大部分独立完成之后的成就感满满。
我跳进的坑:
- 1.一开始构建的结构不能满足后续命令的需求,导致我后来删掉重构了一次。tip:一定要把文档看完,对blob,commit,tree的对象理解透彻了,选择恰当的数据结构再开始敲代码。
- 2.把commit放到index里后修改了commit的节点,导致sha1变化,后续索引失效。(千万别修改已经储存的提交)
- 3.Java关于自定义对象类的赋值是引用传递,不是值传递。(这个坑花了我2~3h才找到,当我定位到赋值语句出错的时候,一拍大腿,恍然大悟)
- 4.最后的merge冲突信息最后忘记加换行符。(emm,其实再<<<<<<<后面有一个换行符,我布吉岛,导致一直检查不出来哪里错了,可恶的格式问题)
最后,总而言之
- 做出来的那一刻还是非常激动的,因为是本人写过的最长的一个小项目,也算是收获了一个小型项目经验吧。CS61b课程还是很不错的,目前已经是我心目中的神课之一了!˶˃ ᵕ ˂˶✧