日常啰嗦
还好在第一篇文章里就列好了接下来的主线及要写的知识点,不然都不知道要写什么东西了,开篇里已经列了基础篇要讲svn和git的知识点,所以这一篇就写一下版本控制。
版本控制的定义
维基百科的解释:版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软体工程技巧,借此能在软体开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。
由这个概念中我们得出两个版本控制的关键点,一个是记录,一个是同步。
为什么要用版本控制?
没有版本控制系统的话,代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改。有了版本控制系统,开发人员只要将每次开发的变更都纪录(Commit)起来,并且透过版本控制系统中进行更新。
每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了,总不能每次都去copy代码然后把文件传给其他人。还有,到底谁改了哪些文件,具体是文件里的哪部分被改动过?一个人的修改会不会把另外一个人的修改给覆盖掉?上线前,代码汇总的工作变得非常危险,需要非常小心,一旦出错后果不堪设想,而且这种情况下,大家的工作不仅仅是开发,无形中,给所有人增加了很多工作量,效率将会变低,如果某个地方出错,可能代码汇总的工作又要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦,当然,几百人的团队也不可能出现这种情况,我们只是做一个假设。
如果这个团队采用了版本控制。我们可以浏览所有开发的历史纪录,而且作任何修改都不再害怕,因为你可以轻易的复原回之前正常的版本,版本控制工具也会在每次提交的时候主动合并所有人的修改并解决可能发生的冲突,每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug是怎么出现的,是被哪位同事,在哪个时间点造成的,最重要的一点是,不怎么需要刻意去去可以问一下开发人员进行到哪一步,通过版本控制,掌握团队的开发进度,对整个开发流程有很大的帮助。版本控制工具中也有很多其他功能,我们也可以透过分支和标签的功能来进行软件发行的不同版本,例如稳定版、维护版和开发中版。
你不是一个人
上一段落讲了一下为什么要用版本控制,只是讲一下版控的好处及积极影响,其实最重要的一点就是,我们开发人员要有一个意识,就是“你不是一个人”,你是团队中的一员,以往写的文章中也提过很多次,时间也是重要的资源,需要合理协调和分配,我们要保证开发质量和开发效率,在团队中普及一些提升工作效率的工具是非常重要的。
git和svn
版本控制的工具还是很多的,例如文章开头所提到的svn和git应该是较为流行的两个版本控制工具,目前文章中提到的demo源码都是托管于github上,方便大家去查阅和学习,我的博客中偶尔也会写一些版本控制相关的文章。有人也对于两个工具做了一个简单的总结:“svn 好学不好用,git 好用不好学”。当然,别人所说的总结都只是代表别人,不能代表你的观点,工具的好坏以及适合与否只有你亲身体验过才会知道。
关于两者的区别,可以参考如下两篇文章,http://www.jianshu.com/p/bfec042349ca,http://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后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
这是一个基于Java技术栈的Web应用开发整合包,主要包含了Spring、SpringMVC、MyBatis、Maven和easyUI这五个关键组件。下面将详细解释这些技术及其整合方式。 **Spring框架**:Spring是一个全面的Java企业级应用开发...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
基于Spring+SpringMVC+Mybatis+easyUI实现的后台管理系统,可用作管理系统开发模板 项目经过严格测试,确保可以运行! 功能简介 本项目实现了一个简单的后台管理系统,可以作为ssm项目学习的脚手架,主要包含以下...
本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
【Spring+SpringMVC+Mybatis+easyUI】是一个经典的Java Web开发框架组合,广泛应用于企业级应用系统中。这个组合提供了模型-视图-控制器(MVC)架构模式的实现,以及数据库操作的便捷支持和用户界面的美化。下面我们...
OA协同办公与管理系统(毕业设计)Spring+SpringMVC+Mybatis+Shiro+JqueryEasyUIOA 哦OA协同...Spring+SpringMVC+Mybatis+Shiro+JqueryEasyUI哦OA协同办公与管理系统(毕业设计)Spring+SpringMVC+Mybatis+Shiro+Jque
总的来说,"Spring+SpringMVC+MyBatis+Maven+EasyUI整合代码"提供了一个完整的Java Web开发环境,涵盖了后端服务、数据库操作、项目构建以及前端展示,是企业级应用开发的常用选择。这个压缩包文件"ssm-maven"可能...
基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统 项目描述 基于spring+springMVC+mybatis+easyui技术实现的医药管理系统 运行环境 jdk7+tomcat7+mysql+eclipse/IntelliJ IDEA+maven 项目技术...
基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...
在IT行业中,构建Web应用程序是一项常见的任务,而SSM(Spring、SpringMVC、MyBatis)框架组合是Java开发中的主流选择。本项目利用这三个框架与前端的EasyUI库协同工作,创建出一个功能丰富的应用程序。在此,我们将...
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站,适合具有一定编程基础,比如计算机专业的大学生或者1-3年工作经验的开发人员。手写简化版 Spring 框架,了解 ...
"SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
SSM框架是Java Web开发中常用的三大框架——Spring、SpringMVC和Mybatis的组合,它们协同工作,构建高效、灵活的Web应用。IDEA作为Java开发的主流集成开发环境,Maven则作为项目管理和构建工具,而MySQL是常见的关系...
酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统...
基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM...