版本控制: 是一种思想,因为每一个问题不可能在一次解决中找到完美的答案,即写项目的时候不可能做到一次性把代码写的不需要后期修改那样子优雅和完善,所以就需要对每一次自己思路和代码进行保留(而每一次提交或修改都看作是一个版本,所以称之为版本控制)。
为什么要用版本控制?
很多刚入行的程序员会觉得使用版本控制很麻烦,影响自己的工作效率。实际上没有使用版本控制,项目全盘崩溃的时候,你之前的工作就是白忙活了
假设一个几百人的团队,共同去完成一个软件。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件,具体是文件里的哪部分被改动过?A的修改会不会把B的修改覆盖掉?汇总的工作变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时,效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。而有了版本控制系统,我们可以浏览所有开发的历史纪录,掌握团队的开发进度,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本。"开发永远是个过程,而不是结果"
千里之堤,以蝼蚁之血溃;百尺之室,以突隙之烟焚。——《韩非子.喻老》
为了更好的解释版本控制的思想和用处,先模拟个人开发的场景进行分析:
publicclassprocessData{//上司让你写一个处理数据的类,只给了你这么多代码}//接下来你根据他给你的代码,添加了一个返回参数和的方法function1publicclassprocessData{publicintfunction1(inta,intb){//System.out.println("这里返回参数的和");return(a + b); }}//后期你觉得这个代码要修改,将返回和改成返回积publicclassprocessData{publicintfunction1(inta,intb){ System.out.println("这里返回参数的积");return(a * b); }}
显然以上场景中,在第三组代码中,要将返回和改成返回积的时候,可以在第二组代码上进行修改,并且在第二组代码上修改的难度以及工作量也不是很大;也可以在第一组代码上进行修改。但是在第二组代码上进行修改之所以难度和工作量不大,是因为这里的代码比较少,就一个求积和求和之间的转换,但是如果说在开发过程中,为了实现一个功能,在原有的基础上进行实现此功能的代码的添加,但是添加之后发现这些所添加的代码 不可用或者说大部分都要修改的话,在现有的基础上去修改是非常麻烦的,而且会造成代码的可读性下降(改了改去到最后自己都被自己改的迷迷糊糊,这样子的代码别人看上去也肯定是没有条理得)。
团队开发的场景:
对于一个文档在团队内做出的修改之后,其记录形式就如下图(这样子也可以避免在实际开发过程中因为很多人同时修改一个文档而造成的,因多人修改而造成的数据或者其他等等问题)
版本控制工具: 用于实现版本控制这一思想的工具;这种控制工具大致分为集中式版本控制工具(CVS ;SVN ;VSS)和分布式版本控制工具(Git and so on)。
如果你还没有使用的话,建议马上为你的软件开发项目建立版本控制。接下来是几点使用版本控制系统的建议:
1.将所有东西都放进版本控制系统
2.频繁且适当大小的递交
3.良好的递交信息
网友评论