## 版本、版本管理与版本管理软件 * 版本是记录特定对象各个可选状态的快照 * 版本管理的任务就是对对象的历史演变过程进行记录和维护 * 版本控制软件提供完备的版本管理功能,用于存储、追踪目录和文件的修改历史的工具软件。 ## 版本管理的应用场景 版本管理在很多场景都会有,随着软件的兴起和蓬勃发展而迅速发展,成为软件开发中协同工作的必备工具。 #### 单人工作版本管理的需求: 对一篇短文或是诗歌进行修改,改动记录和历史或许不是很多,但是,如果是写一篇大的论文,类似毕业论文,从开题到最后论文提交,这中间有多少改动, 比如说写一篇 "论Git"的论文, 往往在论文结束的时候,磁盘里有很多版不同名字的文件: 论Git, 论Git-导师修改版,论Git-提交版,论Git-提交修改版,论Git-答辩版,论Git-答辩修改版,论Git-终极版,...; 还有的命名直接是:论Git-V1,论Git-V2,... 论Git-Vn。旧的版本也有价值,不能删除。这么多版本,作者自己也经常搞不清,以至于在论文后期把错误版本的论文进行了提交。而且,幸运的通过了论文答辩,有其他人请假经验的时候,有点茫然,因为整个过程有点紧张,大部分的时间节点和过程都遗忘了。如果有版本控制软件, 记录整个修改过程, 并记录一些当时的心得,这些问题就完美解决了。 #### 多人协作下版本管理的需求: 很难想象如果没有版本管理,在软件开发中,多人协作该如何进行。是谁提交的代码不知道,什么时间提交的代码不知道,多个人对同一个文件修改,总会发现改动被别人覆盖。 ## 版本管理工具的基本功能 版本管理工具基本上具有以下功能: 1. 记录历史 记录文件修改的时间、提交人。 2. 版本回退 回退到某个时间点 3. 团队协作 能处理多人同时修改的问题,不同的软件的操作方式有一些差异。 4. 分支与合并 #### 版本管理工具的发展阶段 版本管理工具的发展大致经过了四个阶段: 1. 早期的rcs 2. 集中式的CVS,VSS, Perforce,SVN 多分天下 3. 再到bitkeeper分布式 4. git一支独霸 发展的历史图谱如下: ![](https://box.kancloud.cn/fdbbd94c94656c326d398ada69353db9_818x380.png)