版本控制之道
几乎所有项目[61],都要使用版本控制,它究竟有什么优势呢?
时间机器
假设你使用的编辑器,不支持删除,那你就得特别的谨小慎微,甚至是如履薄冰:因为你打错了字没法删除
放松下来,目前我所接触的所有编译器中,还没有变态到这种程度的。
如果编译器提供了删除功能,却没有 undo,那可能会更可怕:如果你不小心选中了全部文字,手一抖……因为不能 undo,你知道,如果此时不小心按下 delete,你就得从头来过……你会为可能产生的后果而发抖
然而,命运总在你不想被打扰的时候来敲你可爱的门,在你手抖的刹那,你真的鬼使神差的按了下那个可怕的键……你的选择只能是重新来过或者放弃……
你会比任何时候都希望时间倒流一秒钟
还好,几乎所有的编译器,都会帮你回到一秒种、一分钟、一小时……之前
假设你想回到一天之前?一觉醒来,你突然想起,有一部分内容其实应该保留下来……但是编辑器在重启之后,就不能够再帮你回到以前的任何时间……
这种情况下,版本控制才是你的救命稻草
分支控制
如果项目只能朝一个方向发展,你会时常在确定方向的问题上犹豫不决。而使用版本控制,创建一个分支各自发展,在适当的时候合并分支,是最好的解决办法
协同工作
很多项目需要协同工作,版本控制能够提供协同工作需要的环境,解决协同工作可能产生的问题
冲突合并
项目成员可能会对一处内容进行不同的修改,版本控制能够反馈这些冲突,以便解决它
常见版本控制系统
传统的版本控制系统,需要在服务器上搭建一个中央仓库,所有成员都是客户端,具有不同的权限。这种方式适应大教堂开发模式,但比较依赖网络,且不够灵活,使用比较广泛的有cvs、svn等
而分布式版本控制系统,则不需要中央仓库,所有的成员都可以完全掌控己方的版本控制系统,通过多种方式灵活的协作。这种方式适应集市开发模式,典型的代表是git
[61] 项目并不总是意味着开发一个大型软件;你帮领导打一份文件,其实也是项目