日常啰嗦

还好在第一篇文章里就列好了接下来的主线及要写的知识点,不然都不知道要写什么东西了,开篇里已经列了基础篇要讲svn和git的知识点,所以这一篇就写一下版本控制。
项目实际效果展示在这里,账密:admin 123456
下载地址,点这里
github地址,在这里

版本控制的定义

维基百科的解释:版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软体工程技巧,借此能在软体开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。
由这个概念中我们得出两个版本控制的关键点,一个是记录,一个是同步。
 

为什么要用版本控制?

    没有版本控制系统的话,代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改。有了版本控制系统,开发人员只要将每次开发的变更都纪录(Commit)起来,并且透过版本控制系统中进行更新。
    每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了,总不能每次都去copy代码然后把文件传给其他人。还有,到底谁改了哪些文件,具体是文件里的哪部分被改动过?一个人的修改会不会把另外一个人的修改给覆盖掉?上线前,代码汇总的工作变得非常危险,需要非常小心,一旦出错后果不堪设想,而且这种情况下,大家的工作不仅仅是开发,无形中,给所有人增加了很多工作量,效率将会变低,如果某个地方出错,可能代码汇总的工作又要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦,当然,几百人的团队也不可能出现这种情况,我们只是做一个假设。
    如果这个团队采用了版本控制。我们可以浏览所有开发的历史纪录,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本,版本控制工具也会在每次提交的时候主动合并所有人的修改并解决可能发生的冲突,每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug是怎么出现的,是被哪位同事,在哪个时间点造成的,最重要的一点是,不怎么需要刻意去去可以问一下开发人员进行到哪一步,通过版本控制,掌握团队的开发进度,对整个开发流程有很大的帮助。版本控制工具中也有很多其他功能,我们也可以透过分支和标签的功能来进行软件发行的不同版本,例如稳定版、维护版和开发中版。
 

你不是一个人

    上一段落讲了一下为什么要用版本控制,只是讲一下版控的好处及积极影响,其实最重要的一点就是,我们开发人员要有一个意识,就是“你不是一个人”,你是团队中的一员,以往写的文章中也提过很多次,时间也是重要的资源,需要合理协调和分配,我们要保证开发质量和开发效率,在团队中普及一些提升工作效率的工具是非常重要的。
 

git和svn

    版本控制的工具还是很多的,例如文章开头所提到的svn和git应该是较为流行的两个版本控制工具,目前文章中提到的demo源码都是托管于github上,方便大家去查阅和学习,我的博客中偶尔也会写一些版本控制相关的文章。有人也对于两个工具做了一个简单的总结:“svn 好学不好用,git 好用不好学”。当然,别人所说的总结都只是代表别人,不能代表你的观点,工具的好坏以及适合与否只有你亲身体验过才会知道。
关于两者的区别,可以参考如下两篇文章,http://www.jianshu.com/p/bfec042349cahttp://www.cnblogs.com/somethingWithiOS/p/5636356.html,区别还是很多的,但是最终的目的只有一个,提高我们的开发效率,减少时间成本。
    还有比如“那个谁谁谁用了git了”“git比svn要好”等等诸如此类的观点,所以“我们也要用git”,针对于此,我想说的是,我们是为了解决问题,而不是为了技术而技术,要根据自身情况出发,适合自己的才是最好的。
    这两个工具都很优秀,具体选哪个,自行决定,关于svn服务器的搭建,网上教程很多,git的话也有一些国内的替代仓库,GitCafe的GitCafe - Share a cup of Open Source,CSDN的CODE,OSChina的代码托管 - 开源中国社区,或者你也可以用gitlab自己搭建一个私有仓库,如果有时间的话,会介绍一下两个工具搭建的详细步骤,你现在也可以搜索一下,相关教程也是很多的。

结语

    还是要重点提一下,版本控制工具在项目的持续集成和持续部署中扮演着重要的角色,这个知识点会在以后的篇幅中展开论述(这里先占个坑)。本篇关于版本控制的文章到此也就告一段落了,主要讲述了一下定义及版控的好处,最后提了一下几种具体的实施方案,选择哪一种就看各自的需求了,至于最终的方案落地就自己动手实践吧。
 
如果还没开始用版本控制的抓紧时间用起来吧。

Spring+SpringMVC+MyBatis+easyUI整合基础篇(九)版本控制的更多相关文章

  1. Spring+SpringMVC+MyBatis+easyUI整合基础篇

    基础篇 Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介 Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试 Spring+S ...

  2. Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

    写在前面的话   承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...

  3. Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复

    写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...

  4. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶

    日常啰嗦 上一篇文章<Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建>简单的讲了一下SVN服务器的搭建,并没有详细的介绍配置文件及一些复杂的功能, ...

  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结

    不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...

  6. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 萌芽阶段 很久之前就开始打算整理一下自己的技术博客了,由于各种原因(借口 ...

  7. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简介

    很久之前就打算开始写一下自己的技术博客了,实在抽不出时间所以计划一直搁置了,最近项目进度渐渐缓了下来,不那么忙了,也因此开始筹备自己的博客.说到这次博客的主角,也是无心插柳找到的,来源于两年前自己写的 ...

  8. Spring+SpringMVC+MyBatis+easyUI整合基础篇(三)搭建步骤

    框架介绍: 主角即Spring.SpringMVC.MyBatis.easyUI,大家应该也都有所了解,概念性的东西就不写了,有万能的百度.   工作环境:       jdk 1.7       m ...

  9. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

随机推荐

  1. java IMAGEIO

    javax.imageio使用 ImageIO 类的静态方法可以执行许多常见的图像 I/O 操作. 此包包含一些基本类和接口,有的用来描述图像文件内容(包括元数据和缩略图)(IIOImage): 有的 ...

  2. react中常用的一些方法

    React.createClass:创建一个ReactClass(组件类),参数是一个对象且必须带有 render 属性方法,该方法必须返回一个封闭的容器(容器内可以有其它不限结构的容器)或 null ...

  3. 用Linux命令行获取本机外网IP地址

    引言:目前获取ip的方法中,ifconfig和ip获取函数得到的都是内网ip.有时候需要获取外网ip,目前通用的做法,是向外部服务器发送请求,解析外部服务器响应,从而得到的自己的外网ip.linux下 ...

  4. 数据库基础-JOIN

    JOIN分类 三.JOIN分类详解 INNER JOIN: 仅仅返回两个表中,匹配列相同的列值,所在行的数据. SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ...

  5. 有效的GOCsharpHelper1.0(源代码开放)

    csharp编写界面,调用基于opencv的图像处理类库,是解决一类问题的优良方法.经过不懈研究,有最新进展: 一.目前情况和优点        位置在11.通过clr             架在c ...

  6. asp.net客户端IP跟踪

    /// <summary> /// 获取客户端IP地址(无视代理) /// </summary> /// <returns>若失败则返回回送地址</retur ...

  7. HNOI2002(伸展树)

    营业额统计 Time Limit:5000MS     Memory Limit:165888KB     64bit IO Format:%lld & %llu Submit Status ...

  8. list_删除元素

    项目遇到了题目所述的问题,还是折腾了一会... 现在总结一下: 这里写一个测试小程序: List<Integer> ints = new ArrayList<Integer>( ...

  9. 关于data-xxx属性大小写不敏感,不识别大写的几点总结

    1.所有标签属性,没有大小写区分,都是小写,如:data-userID,在输出后会变成data-userid,前者只能获取到'undefined'. 2.dataset 自动把 - 转换为驼峰.类似的 ...

  10. wamp修改空密码以及设置虚拟站点

    近来重装了一下wamp,索性记录一下,wamp安装完后,我的常用配置.首先,肯定要修改默认的空密码:其次,便要配置虚拟站点,因为当项目多的时候,每个项目分配成一个站点,对于开发来说,很方便管理.其实网 ...