关于版本仓库
“勾引”大妈可以触发隐藏任务,今天继续。
版本
在Github
的上下文里,个人理解一个版本对应一次commit
,而一次commit
只能做一件事。例如写完一个段落之后,执行一下commit
;或者编写完一个方法,调通基本功能之后,执行一下commit
。
大妈说:
- 五轮改进状态的丢失,对你有什么损失? 至少4类....
目前相关知识水平有限,只能想到三点。如果这是经验型知识,希望大妈可以分享个相关的案例小故事:
- 各个迭代之间可执行版本丢失,很有可能丢失了多次修改中出现的最优版本
- 重构的代码会直接覆盖掉原有代码,如果重构失败将影响功能正常运行
- 迭代间的代码没有备份,所有改动都体现在编辑器的redo中,编辑器退出后全部丢失
版本仓库
Repository
的定义,从git
用户的角度看来就是一个存放所有工程文件、历史版本和配置的地方。
而从git
工作原理的角度来讲,版本仓库由一系列commit objects
和heads
组成。而commit object
包含了某个具体时间点下一系列项目文件,parent commit objects
的引用,还有一个SHA1 name
。head
则是一个指向特定commit object
的引用。
仓库的使命
仓库的使命是实现版本控制,团队协作,数据共享同步和备份。
举例来说,几个人组成一个团队翻译一份英文电子文档,每个人负责翻译的章节不同,也分别负责不同的章节进行校审,每个人参与到项目中的时间、地点不同。在没有版本控制的情况下工作,简直就是灾难。
什么是工程文件
工程文件在不同的上下文里有不同的体现,对OMOOC2.py
仓库而言,这是一个存放Python
学习过程的仓库,记录整个学习期间产出的代码、教程、文档、总结等,会有.md
文件,.py
文件,各种截图等。
版本仓库中应该存放什么
不应该出现的自然是各种.log
文件,.zip
文件之类。大妈问有没有简单的判定方式可以交给大家,按照自己目前的能力回答这个问题,所有中间态文件、临时文件、编译日志、代码运行结果等都不要出现。
范例的话,可以参考OMOOC2.py
的仓库模板,仓库的工作目录下的.gitignore
屏蔽的文件都是没有必要出现在仓库中的。所以我强行git add -f
添加history.log
到仓库实在不应该。也不应该将版本仓库当成网盘,给一个.zip
文件的链接供大家下载文件。