1.什么是 version control

版本控制(Vevision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软体工程技巧,借此能在软体开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。

2.为什么要进行版本控制

版本库就是一个仓库,你把东西放进去(通常是你编写的程序代码),然后再在需要的时候拿出来。通常这种仓库都有一个很神奇的地方,你不但能看到你放进去的东西现在的样子,还能看到它以前的样子,这就是版本了,同一件东西每次放进去时的样子都会被保留下来,所以你可以追溯这个东西在任何时期的样子。那么控制呢?那就有管理的概念在里面了。首先仓库有自己的结构(通常就是个数据库),进入仓库的东西都按照这一结构存放着,无论你把东西放进还是拿出也要遵循你所用仓库的标准(用专用的版本控制命令或程序),而依靠所提供的程序或命令,你就可以操作这个仓库,控制里面的内容,并且想看某个东西的任何某个版本都可以。

世界上无数大大小小的开发项目都在使用各种各样的版本控制系统,原因在于它的优点对于一个项目开发来说是无比重要。

一个最简单的开发团队,也许就两三个人,他们共同完成一个软件的开发。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件,具体是文件里的哪部分被改动过?A的修改会不会把B的修改覆盖掉?汇总的工作变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时,效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦。

如果这个团队采用了版本控制。那么版本控制软件在每次提交的时候都会主动合并所有人的修改并解决可能发生的冲突。每个人手里一直都是汇总好的代码。当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。另外,你还可以知道,程序的某个Bug,是怎么出现的(被谁以及什么时候引入进来的)。

3.怎样用git进行版本控制

每创建一个项目,分别创建dev、test、release、master四个固定分支。

dev分支用来研发人员进行自测和模块间联调使用的,用来部署到研发环境的,开发人员对该分支有pull和push权限。

test分支是测试人员进行测试的代码分支,是部署到测试环境的代码分支,研发人员联调完自测完成后,提交feature分支合并申请到test分支,由管理员负责代码review并进行代码合并,该分支是受保护分支,开发人员对该分支有pull权限。

release分支是在test分支测试完成后,由研发人员提交test分支合并申请到release分支,release代码分支是用来部署到预生产环境的,由管理员进行代码合并。

master分支是最终上线的代码分支,测试人员在预生产环境测试通过后,由研发人员提交release代码分支合并申请到master分支,master分支是要部署到生产环境的,master上线完成后打对应版本的tag标签。

关于 version control的更多相关文章

  1. xcode svn commit is not under version control (1) & git commit

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

  2. which type of VS files should be committed into a version control system

    which type of VS files should be committed into a version control system? aps, no: last resource edi ...

  3. svn: warning: 'xxxxxx' is already under version control

    [root@NGINX-APACHE-SVN pm]# svn status ? plugins ? files ? images ? data ? resources [root@NGINX-APA ...

  4. svn is already under version control问题解决

    svn ci 时出现 xx is already under version control,然后无法提交,出现这个问题的原因是你所提交的文件或目录是其他SVN的东西,即下面有.svn的目录,需要先把 ...

  5. Git&Version Control

    Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内 ...

  6. Version Control/Git,SVN

    一.Version Control 1.什么是Version Control 版本控制(Version Control)是指对软件开发过程中各种程序代码.配置文件及说明文档等文件变更的管理,是软件配置 ...

  7. xcode svn commit is not under version control 和 git常用指令

    使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...

  8. version control的简单认知

    version control 版本控制是一种记录文件或文件集随时间变化的系统,以便您以后可以调用特定版本.对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以使用计算机上的几乎任 ...

  9. 【转】svn:is not under version control and is not part of the commit, yet its child解决办法

    来自:http://blog.csdn.net/lufeng20/article/details/7641093 在把写好的代码提交到svn上面时,遇到了一个错误如下: svn: Commit fai ...

  10. 版本控制 version control和团队协作

    这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程. 你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个p ...

随机推荐

  1. mongodb 安装(官方说明链接)

    这里面有很全的 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ 先截个图吧,都是标准的流程,按照操作,是可以安 ...

  2. 关于Javascript闭包(Closure)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  3. Java多线程编程——并发编程原理(分布式环境中并发问题)

    在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么在分布式环境中,可以采取一下策略和方式来处理: 避免并发 时间戳 串行化 数据库 行锁 统一触发途径 避免并发 在分布式环境中 ...

  4. [蓝桥杯]ALGO-86.算法训练_矩阵乘法

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  5. PAT 乙级 1046 划拳(15) C++版

    1046. 划拳(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 划拳是古老中国酒文化的一个有趣的组成部分 ...

  6. 如何修改CSV文件的分隔符

    Excel转成CSV文件,在Windows下默认的列表分隔符是逗号(,).在某些情况下,我们可能需要更改列表分隔符,如某个单元格内容包含逗号,而这可能导致使用它的程序出错,这样就需要更改列表分隔符:再 ...

  7. 【ZZ】号称“开发者神器”的GitHub,到底该怎么用?

    号称“开发者神器”的GitHub,到底该怎么用? https://mp.weixin.qq.com/s/zpKOBMKWckY05Mv_B28RgQ A developer’s introductio ...

  8. 用node.js和webpack做前后端分离的总结

    1.webpack打包的特点 (打包文件到指定地点,修改原文件里的引用路径为打包的地点) 涉及output的path/public path/dev-server里的public path等概念 we ...

  9. Shiro 权限标签

    Shiro 权限标签: 导入标签库: <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" ...

  10. es6 import export 引入导出变量方式

    var testdata='sdfkshdf'; //export testdata;//err export {testdata as ms}; export var firstName = 'Mi ...